장점이 느껴진다면 “foobar 이니까 자동화하고 싶다. 그래서 조금 시간 달라”적인 이야기를 팀에서 하면 좋습니다.
개인이라면 신경 쓰지 않고 해버립니다.
53p
Case. 1
54p ~ 55p Case.1
완전히 국내용 케이스
→ 경우에 따라서는 자동화하지 않아도 된다
56p Case.1
왜 그럴까요?
릴리즈에 걸리는 부담이 거기까지 크지 않을 것으로 예상할 수 있기 때문에.
다국어 대응 시에 많은 업데이트 문장을 쓸 필요가 있지만, 완전히 국내용의 경우는 그 공정이 걸리지 않는다.
57p
Case.2
58p ~ 59p Case.2
글로벌하게 전개하고 현지화도 풍부한 앱
→ 필히 자동화하고 싶다
60p Case.2
왜 그럴까요?
업데이트 문을 포근한 수작업으로 반복할 필요가 있다.
솔직히 상당히 괴롭다.
APK 업로드뿐만 아니라 스토어 정보의 업데이트도 정말 귀찮아진다.
14개국 언어 x 5장의 스크린샷을 업로드 해야하는 일이 생기면 어쩌지.
61p
Case.3
62p ~ 63p Case.3
주로 국내용, 하지만 NDK를 사용하거나 Realm을 사용하거나 하는 경우
→ APK Split을 하여 앱 사이즈를 줄일 수 있다면 매우 효과적입니다
64p ~ 65 APK Split?
splits {
abi {
enable true
reset()
include 'x86', 'armeabi', 'armeabi-v7a'
universalApk false
// true로하면 분해 한 APK 외에
// 지금까지 빌드한 APK도 출력됩니다.
// fablic과 DeployGate에 업로드 할 때 효과적
}
}
66p ~ 67p Case.3
왜 Split 할 때 효과적인가?
→ 앱이 여러 개로 나뉩니다.
위의 예라면 universalAPK를 제외하고 3개의 APK가 완성됩니다.
이런 거 일일이 손으로 못하겠습니다.
그래서 자동으로 업로드하고 편하게 가자고 말하는 스타일입니다.
앱의 사이즈는 국내라면 그렇게도 없을지도 모르지만 해외라면 지속율에 영향을 줍니다.
그래서 만약 해당되는 사람이 계신다면 꼭 도입 해보세요!
68p Agenda
자동화 분위기
목적이나 동기 부여, 가능한 것, 장점 등
릴리즈 자동화 관련 도구 소개
Android 앱 릴리즈 자동화하는데 유용한 도구들을 소개합니다.
어떻게 하는가? (도입 준비)
여러 프로젝트를 예로 들어 자동화한 릴리즈 흐름을 도입하는 것을 생각해봅니다.
어떻게 하는가? (도입)
실제로 도입하는 데 필요한 작업을 확인하겠습니다.
실패하기 쉬운 사례와 주의점
정리
질의응답
69p
도입편
70p
실제로 절차와 코드에 도입부터 배포까지 쫓아갑시다!
71p 이번 요구 사항 (어디까지나 가정입니다)
상황
당신은 5명으로 구성된 개발팀의 Android 엔지니어입니다.
앱은 국제 전개하고 있으며, 번역도 외부에 의뢰하거나 합니다.
최근 1개월, 서비스 그로스를 위해 1주일에 1번 릴리즈 주기를 돌릴 일이 되었습니다.
팀은 비즈니스쪽 사람도 있습니다. 또한 CS 팀에서 릴리즈되면 재빨리 가르쳐달라고 듣습니다.
앱 내의 DB로는 Realm을 사용하고 있습니다.
72p 포근한 수작업 (1/3)
릴리즈전이 되어 이번 업데이트 문장을 생각하고 10개국 언어분량의 번역 의뢰를 했습니다.
번역을 기다리는 동안 최종 확인 검사를 했습니다.
테스트 완료 후 APK를 빌드했습니다.
번역된 업데이트 문장 모두가 수중에 모였습니다.
이제 업로드합니다.
앱 사이즈의 비대화를 억제하기 위해 APK split을 사용하기로 했기 때문에 총 5개의 APK를 업로드 하게 되었습니다.
73p ~ 74p 포근한 수작업 (2/3)
GooglePlay Developer Console에 접속합니다.
APK를 업로드하고(x5) 언어마다 업데이트 문을 복사 붙여넣기 합니다 (x10).
이제 공개 버튼을 누릅니다!
75p
APK를 업로드하고(x5)
각 언어마다 업데이트 문을 복사 붙여넣기 합니다 (x10).
76p 포근한 수작업 (2/3)
APK를 업로드 후, CS팀과 개발팀에 “업로드가 완료되었습니다”라고 알립니다.
스토어 업데이트를 PlayConsole 앱 알림으로 확인할 수 있기 때문에 CS팀에게 다시 알립니다.
77p
상당히 힘든 느낌이다.
78p
그러면 자동화하면 어떻게 될까
79p ~ 82p 이번에는 빠르게 가능한 자동화로 생각합니다.
GooglePlay Developer Console에 접속합니다.
→ 모두 로컬로 준비&완결합시다 by fastlane
APK를 업로드하고(x5) 각 언어마다 업데이트 문을 복사 붙여넣기 합니다(x10).
→ 프로그램에 맡겨보자 by fastlane && CI
APK를 업로드 후, CS 팀과 개발팀에 “업로드가 완료되었습니다”라고 알립니다.
→ Slack으로 자동으로 알리는 구조를 만들어보자 by Slack & CI
스토어 업데이트를 PlayConsole 앱 알림으로 확인할 수 있기 때문에 CS 팀에 다시 알립니다.
→ 이쪽도 Slack으로 자동으로 알리는 구조를 만들어보자 by tonkotsu
83p
이것만으로도 상당히 편해졌습니다!
그러면에서 실현해 봅시다.
84p Step.1 (1/2)
우선 fastlane의 준비
fastlane이 GooglePlay Developer Console에 접근하기 위한 Service Account를 만들고 생성된 json 파일을 준비합니다.
다음으로 fastlane 설치합니다.
gem install fastlane
85p Step.1 (2/3)
fastlane를 사용하여 GoogelPlay에서 현재 최신 스토어 게재 정보를 취득하고 git 관리하에 둡니다.
이때 주의할 점은 조금 전 다운로드한 json 파일은 git 저장소에 넣지 않도록 하십시오.
> cd your_project_folder
> fastlane supply init -j / path / to / json
> git add.
> git push
86p Step.1 (3/3)
이런 식으로 업데이트 문장이 들어간 디렉토리가 프로젝트 폴더에 생성됩니다.
업데이트를 배포할 때에는 텍스트 파일에 버전 코드명을 붙여서 업로드하는 것으로 스토어에 업데이트됩니다.