[Xcode] 앱 배포시 '빌드 진행한 시각' 추가하는 스크립트 만들기 - Running custom scripts during a build
시나리오 : QA 팀과 소통 시 앱 배포시의 타임스탬프를 추가하여 버전 싱크를 맞춰 원활하게 소통할 수 있도록 했다.
타켓 > 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"
스크립트에서 선언한 변수가 저장될 키를 .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
https://github.com/firebase/firebase-ios-sdk/issues/11400#issuecomment-1581466545
[파이썬] 매일 슬랙으로 뉴스를 받아보도록 자동화를 해보자. - 1 (0) | 2023.12.15 |
---|---|
[Git] .gitIgnore에 추가한 파일이 계속 뜰 때 - Git 캐시(Cache) 삭제하기 (0) | 2023.10.23 |
[ios network link conditioner] 네트워크 속도 테스트 해보기 (2) | 2023.10.11 |
Elvis Operator in Swift (0) | 2023.08.14 |
[Swift tips] 지금 바로 적용해보는 Swift 최적화 팁! (0) | 2023.08.09 |
댓글 영역