모바일 앱 배포하는 법
배포란?
배포를 알아보기 전에 개발의 전반적인 맥락을 생각해보자.
개발자가 프로그래밍 할 때, 최종 목적이 무엇일까? 자신이 개발한 프로그램을 사람들이 쓰게하는 것이 아닐까?
개발자가 로컬환경에서 코딩 / 빌드 / 디버깅을 통해 프로그램을 완성했다면,
이제 완성된 프로그램을 다른 사람에게 나눠주고 싶을 것이다.
이렇게, 완성된 프로그램을 사용자가 접근할 수 있는 환경에 배치하는 과정을 배포과정이라고 한다.
배포방식
배포방식에는 크게 Google Play, App Store와 같은 앱 마켓플레이스를 이용한 배포와 그 외의 대체 배포방식으로 나눌 수 있다.
참고로 IOS 기기는 앱 마켓플레이스를 이용한 다운로드만 가능하다.
두 방식 모두 출시용 앱을 배포해야 하므로 공통적으로 release bulid(배포용 빌드)를 거치게 된다.
이 글에선 대체 배포방식에 대해서 가볍게 알아보고, 마켓플레이스에 배포하기 위해 배포용 빌드 및 테스트 과정에서 신경써야 할 부분들을 정리해봤다.
🌐 대체 배포방식 (Android)
1. 이메일을 통한 앱 배포
앱을 출시하는 가장 쉽고 빠른 방법이다.
이메일에 첨부된 출시용 앱을 사용자가 Android 기기에서 열면 Android 시스템이 APK를 인식해서 앱을 설치할 수 있게 한다.
다만 설치를 위해선 기기 설정에서 ‘출처를 알 수 없는 앱 설치’ 설정을 해야 한다.
이메일을 통한 앱 배포는 적은 수의 신뢰할 수 있는 사용자에게 전송하는 경우 편리하지만, 불법 복제와 무단 배포를 차단하기 어렵다.
2. 웹사이트를 통한 배포
웹사이트 또는 서버(개인/기업용 서버 등)에서도 앱을 다운로드하도록 제공할 수 있다.
출시용 APK 파일을 호스팅하고 사용자에게 다운로드 링크를 제공하면 된다. 마찬가지로 ‘출처를 알 수 없는 앱 설치’ 설정이 되어 있어야 한다.
🌐 Google Play에 배포하기 (Android)
✔️ 런처 아이콘 추가하기
상표와 같이 사용되는 앱 고유의 아이콘 이미지를 추가한다.
✔️ Java keystore를 이용한 앱 서명
Java JDK에 keystore
파일을 생성한다.
keystore
참조에 관한 정보를 담은 .properties
파일을 프로젝트 경로에 추가한다.
Gradle에서 서명을 구성하기 위해서, build.gradle
파일을 수정하여 .properties
파일로부터 keystore
정보를 가져올 수 있도록 한다.
1
2
3
4
* keystore: 인증서 & 암호화에 사용되는 보안 인증서(개인키 등등)를 저장하는 공간
* .properties: 응용 프로그램에서 쓰이는 파라미터들을 저장(ex:language = English)하기 위한 파일의 확장자
* Gradle: 빌드 자동화 시스템(compile, test, packaging 등의 빌드 작업을 자동으로 수행)
* build.gradle: 파일을 빌드할 때 필요한 정보를 저장하는 공간
✔️ ProGuard 사용
ProGuard
의 규칙을 명시한 .pro
파일을 만들어서 ProGuard
를 적용할 때 쓸 규칙을 추가한다.
Gradle에서 ProGuard
를 구성하기 위해, build.gradle
파일을 수정하여 Release Build 할 때 ProGuard
의 규칙이 적용되도록 한다.
1
2
3
* ProGuard: 자바 코드를 최적화하고 난독화하는 도구
바이트코드(컴파일 된 코드) 최적화 및 사용하지 않는 명령어 감지, 난독화 기능으로 아이디어 & 알고리즘 숨김
안드로이드 SDK의 한 부분으로 배포되며 Release Build 과정에서 실행
✔️ 앱 manifest 검토하기
Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수정보를 담고있는 manifest
파일(.xml
)을 검토하여 올바른 값을 포함하고 있는지 확인한다.
✔️ 빌드 구성 검토하기
올바른 빌드 구성을 위하여 build.gradle
파일을 검토하고 올바른 값들을 포함하는지 확인한다.
✔️ 앱 번들 빌드하기(추천)
규칙에 따라 구성한 앱의 코드와 리소스를 서명된 AAB(안드로이드 앱 번들)로 빌드한다. (안드로이드 스튜디오, 커맨드 창 등 이용)
1
2
3
* APK: 안드로이드 응용 프로그램 패키지(프로그램 압축파일)
* AAB: 앱의 모든 컴파일된 코드 및 리소스를 포함하며 APK 생성 및 서명을 Google Play에 맡기는 게시 형식,
각 기기 설정에 맞게 최적화된 APK를 Google Play가 생성해서 제공
✔️ 앱 번들 테스트하기
방법1: 번들 도구를 이용한 오프라인 테스트
GitHub
에서 bundletool
을 다운받는다.
앱 번들로부터 APK 세트를 생성한다.
연결된 기기로 APK를 배포한다.
방법2: 구글 플레이를 이용한 온라인 테스트
테스트 할 번들을 구글 플레이에 업로드한다.
내부 테스트 트랙을 사용하거나, 알파 or 베타 채널로 프로덕션 배포 이전에 테스트한다.
✔️ Google Play 스토어에 출시하기
Play Console
에서 앱을 등록한다.
앱 정보를 설정한다(예: 로그인 유무 설정, 연령 설정 등).
스토어에 등록될 정보들을 설정한다(예: 연락처, 앱 카테고리, 앱 사진 등).
프로덕션 탭에서 앱과 AAB를 등록해서 프로덕션 버전을 만든다.
프로덕션 트랙으로 출시하면 Google의 심사를 거쳐 출시된다.
1
* Play Console: Google Play 앱 관리, 테스트 및 개선 기능 등을 제공하는 서비스
🌐 App Store에 배포하기 (iOS)
✔️ 번들 ID 등록하기
iOS 개발자 계정에서 새로운 Apple 번들 ID를 만든다(개발자 계정 App IDs에서).
앱 서비스 정보를 입력한 후 번들 ID를 등록한다.
App Store Connect
에서 앱 정보, 번들 ID를 입력하여 앱 레코드를 생성한다.
1
* App Store Connect: App Store에서 판매하는 앱을 제출하고 관리하는 데 사용하는 웹 기반 도구 모음
✔️ Xcode 프로젝트 설정하기
Xcode
를 열고 (프로젝트) > General 탭에서 버전, 빌드, 적합 UI 설정 등의 정보를 입력한다.
project editor에서 런치 스크린을 설정한다.
usage description을 명시한다.
1
2
* launch screen(= splash screen): 앱이 실행 시작될 때 즉시 나타났다 바뀌는 화면
* usage description: 앱(달력, 연락처 등)이나 자원(카메라, 마이크 등)에 대한 접근여부를 기술해놓은 것
✔️ 앱 아이콘 추가하기
App Store에서 보여질 앱 고유의 아이콘 이미지를 추가한다.
✔️ 빌드 아카이브 생성 및 업로드하기
Xcode
에서 배포용 빌드로 빌드한다.
Product > Archive 탭에서 배포용 빌드된 앱의 유효성을 검사한다(by Validate App
).
배포용 빌드된 아카이브를 App Store Connect에 업로드한다(by Distribute App
).
✔️ TestFilght에 앱 배포하기
빌드된 앱을 테스트해보기 위해서 TestFilght
를 사용할 수 있다.
1
2
* TestFilght: 모바일 앱(iOS)의 무선 설치 및 테스트를 위한 온라인 서비스
내부/외부 테스터에게 빌드를 보내서 앱을 테스트해 볼 수 있다.
✔️ 앱스토어에 앱 출시하기
App Store Connect
를 통해 제출하게 되면 Apple의 심사를 거쳐 출시된다.