- Xcode 11.3.1 기준
Multiple Configurations로 Fastlane으로 자동배포까지..
1 — Multiple Configurations 생성 및 빌드 환경 설정
2 — Fastlane으로 Debug, Release 구분해 자동 배포
- http://bitly.kr/Qs4pABe3
개인 개발 앱이 아니라 실제 사용자에게 배포하는 서비스 앱일 경우 내부 QA 또는 CD(Continuous Delivery) 환경을 구축하기 위해서 Configurations 를 나눠서 관리해야할 경우가 생겨요. 🧐
우선 1부 Multiple Configurations를 생성해 빌드 환경 설정까지를 알아볼거예요. 배포까지 생각해 앱 이름 및 앱 아이콘을 구분해 설정하려고 해요.
Step 1 : Multiple Configurations 생성
우선 Project Info 의 Configurations 부분에 + 버튼을 누른 후 Duplicate "Debug" Configurations
를 눌러서 아래와 같이 Staging 을 생성해요. 이름 및 개수는 개발자가 원하는대로 만들면 되겠죠?
- Debug : 개발 Debug
- Staging : Testflight 에 올라가는 Debug 환경
- Release : Testflight 및 AppStore 에 올라가는 Production 환경
Step 2 : Build Settings 에서 User-Defined Setting 생성
앱 아이콘을 구분해 사용할 때 간편하게 쓰기 위해 Add User-Defined Setting
으로 아래와 같이 만들어요.
이름에서 눈치챘겠지만 Bundle Identifier 뒤에 붙는 부분이 될거예요.
Step 3 : Packaging Setting
Product Bundle Identifier
에서 Bundle Identifier 앞 부분을 입력 후 아까 Custom으로 생성했던 ${BUNDLE_ID_SUFFIX}
를 뒤에 붙여요. 그러면 자동으로 아래처럼 입력되는 것을 확인할 수 있어요.
그럼 이제 앱 이름을 변경해볼까요?
Product Name
만 수정하면 나머지는 자동으로 입력되더라구요.
Step 4 : Multiple App Icon 설정
icon을 검색해서 Asset Catalog App Icon Set Name
에 아까 설정했던 것처럼 차례대로 입력해요.
그 후 Assets 파일에 AppIcon 이름을 지정하고 해당하는 앱 아이콘을 넣으면 끝. 😄
Step 5 : Info.plist Setting
Fastlane 으로 배포 설정하기 전 마지막 단계인데, Bundle Identifier 값을 변경했으니 Info.plist 에서도 변경해줘야해요.
Bundle identifier
부분에 Bundle ID 다음 ${BUNDLE_ID_SUFFIX}
를 붙여서 입력한다. com.blahblah${BUNDLE_ID_SUFFIX}
이런식으로. 참 쉽죠? 👏
그 후 Build 해보면 Debug와 Release가 따로 Build 되며, 아이콘 및 이름도 별도로 쓰는 것을 확인할 수 있어요. 앱 아이콘은 이미지가 없어서 적용하지 못했지만 분명히 될거예요. 😿
Conclusion
참고한 글이 몇 개 있는데 영문인데다가 생략된 이미지도 있어서 최대한 초보자도 알아볼 수 있게끔 이미지 위주로 작성했어요.
테스트 하면서 발견한 Xcode 버그인지, 아니면 원래 그런건지 몰라도 Info.plist에서 Bundle name을 지정해도 한두번 Build 하다보면 자동으로 Debug 또는 Release 의 ID로 자동 변경되더라구요. 저만 그런걸지도.. 😱
Testflight에 올리는데는 전혀 문제 없지만, 개발 테스트 할 때 따로 구분해서 보고싶은데 자꾸 하나의 앱으로 Build 되는 현상이.. 물론 테스트 환경은 Debug와 Release 따로 설치되긴 하는데 앱이 두개 설치 되는게 아니라 한개의 앱을 바꿔치기 해서 좀 거슬려요.
Achieve로 올릴 때 Edit Scheme 에서 Staging, Release 변경해가며 올리면 따로 올라가는걸 확인할 수 있어요.
Xcode에서 설정할건 끝났고, 조만간 Fastlane 자동 배포 테스트 후 또 공유할 예정이예요.