1년전에 auto increment build number를 하고싶었는데
codemagic build 공식문서에 나와있는 Build versioning 두가지 방법 이 있는데
그 중 Increment app version using environment variables 방법 환경변수로 줬는데 아무리 안먹혀서
Set Xcode project build number via command line 방식으로 했는데 여기서 과거에 제가 실수를 했는데..!
바보처럼 xcode -> Target -> build Phases에 script올려놓고 로컬 환경에서 개발할 때 run할때마다 +1 되서 빼고
수동으로 1년간 buildNumber를 수동으로 올려줬었습니다..ㅎ
그러다가 불편함을 느껴.. codemagic 셋팅을 다시 ..시도했는데
과정이 짧진 않아서.. 공유드려야겠다 싶어 가져왔습니다...!
BUILD_NUMBER
. Holds the total count of builds (including the ongoing build) for a specific workflow in Codemagic. In other words, if you have triggered 10 builds for some workflow in Codemagic, the next time you build it, BUILD_NUMBER will be exported as 11.
PROJECT_BUILD_NUMBER
. Holds the total count of builds (including the ongoing build) for a project (application) in Codemagic. In contrast with BUILD_NUMBER, PROJECT_BUILD_NUMBER will increase every time you build any of the workflows of the app.
= 그 중 저희는 PROJECT_BUILD_NUMBER를 택했습니다.
workflow를 release Dev, release Prod 나눠서 관리하는데 buildNumber는 겹치면 안되서 PROJECT_BUILD_NUMBER로 관리해주었습니다.
--build-number=$(($PROJECT_BUILD_NUMBER + 100))
뒤에 인수옵션들은 무시해주시고! 하이라이팅 되어있는 부분만 집중해주세요!
+하이라이팅 외 나머지 인수들은 codemagic과 관련 없는 flavor 셋팅 옵션들입니다.
성공적으로 versionCode 변경되어 올라갑니다.
자 똑같이 213..이라고는 바뀌었지만?
올라갈 땐 --build-number 인수값을 따르는게 아닌,
xcode내 적혀있는 build 번호!! 를 보고있는겁니다.
info.plist
에 CURRENT_PROJECT_VERSION라고 적혀있는데,project.pbxproj
에 작성되는 CURRENT_PROJECT_VERSION를 따르고 있는거죠..ㅠㅠ
그래서 두번째 방법인 Set Xcode project build number via command line을 다시 봤는데..
결론부터 말하면 이걸로 해결됐습니다..!
+
클릭
pre build script 작성
#!/bin/sh
set -e
set -x
cd ./ios
agvtool new-version -all $(($PROJECT_BUILD_NUMBER + 100))
설정 후 돌리면 됩니다. 끝!!!
- 아! 물론 build args는 android만 살려주면 됩니다.
저 script를 테스트 삼아 직접 명령어 실행보시면 알 수 있습니다.
그러고 변경사항 다시 롤백해주세요!
agvtool new-version -all $(($PROJECT_BUILD_NUMBER + 100))
명령어를 쳤을 때 CURRENT_PROJECT_VERSION를 바라보는게 아닌 고정된 숫자 100으로 다 바뀌는 것을 볼 수 있습니다!PROJECT_BUILD_NUMBER
값이 codemagic이 아닌 /ios환경에선 무엇인지 모르니 0으로 되고 +100이 된 모습입니다.set -e
는 명령어 돌다가 에러가 났을 경우 중단set -x
는 추적 기능이 생겨서 표준 에러로 커멘드 출력 (? 잘 모르겠습니다..)
Pre-build script가 돌고 수동으로 다 바꿔준 상태인거죠.
android, iOS buildNumber..결과!
제가 --build-number 인수값을 뺀줄 알았는데 안뺐네요..
여러분들은 iOS build args --build-number 부분 빼주시면 됩니다!
위에 설명했다싶이 배포시 안 먹힙니다!!
publishing에는 아름답게 Pre-build에 돌렸던
결과를 증명하듯 version code가 할당되었네요!
다들 환경셋팅에 많은 시간 쓰지마시고.. 다들 해결 잘 되시길 바랍니다..즐코..🙋🏻♀️
안녕하세요? 플러터 관련해서 좋은글 많이 보고 있습니다. 한가지 여쭤볼게 안드로이드 같은 경우 코드매직에서 빌드버전을 올리는 방식을 사용하면 실제 코드에서는 어떻게 관리하시나요?
실제 코드에서도 버전을 올리고 사용하시는지 궁금합니다