이 글에서는 실제 연동까지 실습을 진행하지는 않습니다.
단순히 진행에 필요한 기본 배경지식만을 설명합니다.
현재 안드로이드에서는 apk 가 아닌, aab 만을 업로드하게끔 권장되고 있다.
What is aab, bitcode?
Android 에서는 플레이스토어에 업로드 시, 디바이스별 최적화된 번들을 뽑아내기 위해서 aab 를 사용하고
iOS 에서는 앱스토어 업로드 시, 디바이스별 최적화된 번들을 뽑아내기 위해서 bitcode 를 사용합니다.
디바이스별로 번들이 최적화되면, 불필요한 바이너리들은 제거가 되고 용량이 줄어들게 됩니다.
플레이스토어에는 세가지 배포 트랙이 있는데, Alpha -> Beta -> Product 세가지이고, 좌에서 우측으로 이동하면서 테스트 및 배포가 가능하고, aab 업로드는 Alpha, Beta, Product 어디에 먼저 하던 상관 없다.
플레이스토어의 경우 빌드 파일에 서명을 진행하는데 이 과정들이 조금 복잡하다.
플레이 콘솔 > 앱 선택 > 설정 > 앱 무결성
에서 Signing key 확인 가능)플레이 콘솔 > 앱 선택 > 설정 > 내부 앱 공유
에서 내부 앱 공유 key 확인 가능)따라서 업로드 전후로 키가 바뀌므로, 테스트와 실제 고객들이 이용하는 어플리케이션간의 서명에는 차이가 있다.
소셜 로그인을 사용한다면 이 점을 인지하고, 각 키별로 finger print/해시를 추출해야 한다.
Fastlane 으로 플레이스토어에 업로드를 하기 위해서는 upload_to_play_store 플러그인을 사용하면 된다.
기본적으로 빌드된 파일들의 경로가 잡혀있어서 별도로 설정할 건 없던걸로 기억한다. (다만 flavor 를 이용해서 환경을 분리하고 있다면, 직접 경로를 설정해줘야 한다.)
- 업로드를 하기 위해선 apk 가 아닌, aab파일을 빌드해야 한다.
- 업로드를 위해서는 play console 계정의 credential 이 필요한데, 링크를 참고하자
Fastlane 에서는 간단하게 테스트 업로드를 위한 플러그인을 두개 추천해주고 있는데
하나는 플레이스토어 베타 트랙과, 다른 하나는 Firebase distribution 이다.
플레이스토어는 생각보다 업데이트에 딜레이가 조금 있어서, 내부 테스트를 할 목적이라면 firebase distribution 을 추천한다.
lane :beta do
# aab 빌드
# 플레이스토어 베타 트랙에 업로드
upload_to_play_store(track: 'beta')
# 혹은 firebase distribution 으로 업로드
firebase_app_distribution(
app: "1:123456789:android:abcd1234",
groups: "qa-team, trusted-testers"
)
# 슬랙에 완료 알림 전송
end
iOS 의 경우 Testflight 에 업로드된 바이너리를 심사에 올리고, 심사에 통과되면 배포를 하는식으로 진행이 된다.
Android 보다 빌드나 업로드가 상당히 오래 걸린다.
Testflight 에 업로드되고 처리과정을 기다리는데, 어차피 이메일이나 푸시로 알림이 오니까 기다리지 않아도 된다. (skip_waiting_for_build_processing
옵션을 꺼주자.)
Fastlane 으로 앱스토어에 업로드를 하기 위해서는 별도의 플러그인이 있지만,, 어차피 테스트를 진행하고 올려야 하므로 testflight 에 업로드하는 upload_to_testflight 플러그인을 사용하자.
만약 테스트를 위한 배포를 firebase distribution 으로 Android, iOS 양쪽 다 구축해놨다면 프로덕션 배포는 앱스토어에 올리는 플러그인을 사용해도 상관없다. (자세한 내용을 알고 싶다면 iOS ad-hoc 키워드로 검색을 해보자.)
하지만 기억하자, 테스트 없는 배포는 예상못한 버그를 불러오고, 예상못한 버그는 개발자에게 스트레스를 불러오고, 머리를 빠지게 하고 수명을 단축시킨다. 😵
lane :beta do
# Match 로 Cert/Provisioning profile 설정
# 앱 빌드
# 앱 업로드
upload_to_testflight(skip_waiting_for_build_processing: true)
end
업로드할때, 앱스토어에 업로드를 하는거라서 인증에 필요한 필수 정보들이 조금 많다. 플러그인 가이드를 상세히 읽어보면 필요한 정보들과 설정하는법등을 알 수 있으니 잘 읽고, cli 에서 입력하라고 할때 일일이 입력을 해주거나 환경변수로 설정을 해두면 된다.
환경변수들은 여기를 참고하고, 2FA 를 사용하기 싫다면 AppStore Connect API 키를 발급받아서 사용하자.
슬랙은 정말 별거 없다. http://docs.fastlane.tools/actions/slack/#slack
Incoming webhook 으로 메세지를 보내는거라서, Incoming hook URL 을 슬랙에서 발급받고 설정만 해주면 된다.
lane :slack do
slack(message: "App successfully released!")
end