상세 컨텐츠

본문 제목

[Xcode] 앱 배포시 '빌드 진행한 시각' 추가하는 스크립트 만들기 - Running custom scripts during a build

iOS 캐기/Tricks & Tips 캐기

by Atlas 2023. 10. 20. 17:51

본문

728x90
반응형

시나리오 : QA 팀과 소통 시 앱 배포시타임스탬프를 추가하여 버전 싱크를 맞춰 원활하게 소통할 수 있도록 했다.

 

 

커스텀 스크립트 추가 방법

1. 스크립트 추가 

타켓 > Build Phases > "+" 클릭 > New Run Script Phase 

 

* BuildTimeStamp 명은 각 자 상황에 맞게 변경해서 사용하시면 됩니다. 

/usr/libexec/PlistBuddy -c "Set :BuildTimeStamp $(date '+%Y%m%d%H%M')" "$INFOPLIST_FILE"

 

 

필자의 경우 앱 배포시 BuildTimeStamp 값이 업데이트 되는것이 요구사항임으로 ✅ For install builds only 를 체크하였다. 

 

 

 

Run script 체크항목을 정리해보았다. 

- 둘 다 체크해제 :

  스크립트를 모든 증가되는 빌드에서 실행하도록 강제함

- Based on dependency analysis 만 체크 

   입력, 컨텍스트 및 출력이 변경되지 않은 경우 증가되는 빌드에서 스크립트를 건너뜀

- 둘 다 체크 :

   입력, 컨텍스트 및 출력이 변경되지 않은 경우 증가되는 설치 빌드에서 스크립트를 건너뜀

 

 

전체 스크립트

# Type a script or drag a script file from your workspace to insert its path.
/usr/libexec/PlistBuddy -c "Set :BuildTimeStamp $(date '+%Y%m%d%H%M')" "$INFOPLIST_FILE"

echo "+================================+"
echo "|=B===I====D=====================|"
echo "|===U===L========================|"
echo "|============T===M===S===A===P===|"
echo "|==============I===E===T===M=====|"
echo "+================================+"
echo $(date '+%Y%m%d%H%M')
echo "=======================by atlas ^^b"

 

 

 

2. .plist에 사용할 키 추가 

스크립트에서 선언한 변수가 저장될 키를 .plist에 생성한다. 

 

 

 

이처럼 2가지 스크립트 추가, plist에 키 추가를 하면 정상동작이 되었으나 ..... Xcode 15 업데이트 후 안되는 이슈가 발견되었다. 

Report Navigator에 가서  로그를 보니 

 

Error Reading File: .../Info.plist 을 읽는데 Error가 발생한것을 확인할 수 있었다.

 

이슈 해결 : Error Reading File: .../Info.plist

 

Xcode 15에서 User Script Sandboxing이 기본적으로 YES로 설정이 되어 있기 때문에 User Script Sandboxing 값을 No 로 업데이트 해주고 빌드를 하면 원하는 결과를 얻을 수 있다.  (Xcode 14에서는 기본적으로 NO로 설정되어 있음)

 

 

 

 

결과

1.빌드로그에 정상적으로 로그가 찍히는 것을 확인할 수 있다.

2.plist에 추가한 BuildTimeStamp Value에 정상적으로 값이 삽입된것을 확인할 수 있다. 

3.코드로 BuildTimeStamp를 호출하여 화면에 값을 표현할 수 있다.

 

 

마무리 

To-do

- 자동으로 빌드 넘버가 추가되는 것도 응용해서 해볼 수 있을 것 같다. 

 

 

git 주소 : 

https://github.com/PotatoArtie/Potato-iOS/tree/master/Labs/Playground/RunScriptOnlyWhenInstalling

 

ref.

https://developer.apple.com/documentation/xcode/running-custom-scripts-during-a-build

 

Running custom scripts during a build | Apple Developer Documentation

Execute custom shell scripts during the build process, and run tools or other commands that your project requires.

developer.apple.com

 

https://github.com/firebase/firebase-ios-sdk/issues/11400#issuecomment-1581466545

 

Xcode15 Beta1: Firebase iOS SDK: Unable to process Info.plist during build process · Issue #11400 · firebase/firebase-ios-sdk

Description Environment Xcode version: Xcode15 Beta1 Firebase Component: Crashlytics Installation method: Swift Package Manager (SPM) Firebase SDK version: 10.4.0 Problem During the build process o...

github.com

 

반응형

관련글 더보기

댓글 영역