본문 바로가기
Android

[깡쌤의 안드로이드 프로그래밍 with 자바 - 2022 - 쌤즈] 정리 4 - 앱 배포

by 들풀민들레 2022. 5. 9.

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.

본 글은 [깡쌤의 안드로이드 프로그래밍 with 자바 - 2022 - 쌤즈] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책 혹은 인강(www.ssamz.com)을 통해 확인해 주세요.

 

1.3. 앱 배포


안드로이드 앱을 배포하는 방법은 APK 파일로 배포하는 방법과 안드로이드 앱 번들(Android App
Bundle)로 배포하는 방법 두 가지가 있습니다. 원래는 APK 파일로만 배포할 수 있었지만, 2017년부터
안드로이드 앱 번들로 배포하는 방식을 추가로 지원하게 되었습니다. APK 파일로 배포할 것인지,
AAB로 배포할 것인지는 [Build → Generate Signed Bundle / APK] 메뉴에서 선택합니다. AAB로
배포하는 것을 권장하기에 ABB로 배포하는 방법을 설명하도록 하겠습니다. 참고로 앱을 배포하는 것은
개발 이후의 단계이므로 당장 필요하지 않다면 이번 절을 생략해도 됩니다.
앱을 배포하려면 먼저 키(Key)를 준비하고 준비된 키로 앱을 서명해야 합니다. 숙련된 사용자라면
시스템의 명령 프롬프트에서 작업해도 되지만, 안드로이드 스튜디오에서 마우스 클릭으로 키 준비와
앱에 서명하는 것으로 배포 파일을 추출할 수 있습니다.


1.3.1. AAB 파일의 이해


안드로이드 앱 번들(Android App Bundle)은 새로운 앱 배포 방식입니다. APK 파일 배포도 여전히
잘 지원되지만, APK 배포 방식은 파일 크기가 크다는 문제가 있습니다. 이 문제를 해결하기 위해
2018년 구글 I/O에서 새롭게 제시한 방법입니다.
안드로이드 공식 매뉴얼에 있는 그림으로 안드로이드 앱 번들 방식을 이해해 보겠습니다.

 

 

위의 그림은 개발자가 임의의 기기를 대상으로 앱을 배포하고자 앱에 필요한 모든 리소스(언어와 화면
크기 등)와 하드웨어 아키텍처를 준비한 것입니다.

 

사용자가 앱을 사용하려면 당연히 개발자가 준비한 모든 리소스가 설치 파일에 포함되어야 할 것으로
생각하지만, 실제로 사용자의 단말에서는 모든 리소스가 필요하지는 않습니다. 예를 들어, 개발자가
글로벌 앱을 만들어 모든 언어와 관련된 리소스를 준비했다고 합시다. 그런데 실제 사용자가 한국어만
이용한다면 영어를 위한 리소스는 필요가 없습니다.
기존의 APK 파일은 이에 대해 동적으로 판단하지 않기 때문에 개발자가 준비한 모든 리소스가 APK
파일에 포함됩니다. 하지만 안드로이드 앱 번들 방식은 실제 개발자가 준비한 모든 리소스를 포함하는
것이 아니라, 사용자의 단말에 필요한 리소스만 동적으로 구성하여 제공합니다. 그렇게 함으로써 배포
파일의 크기를 줄입니다.

 

1.3.2. AAB 파일로 앱 빌드
이 책을 끝까지 학습하고 이번 절을 참고하면 문제없이 AAB 파일을 추출하고 Play 스토어에 앱을
배포할 수 있습니다. 그러나 안드로이드 앱을 개발해보기 전에 배포 방법부터 학습한다면 사전 준비
작업이 이해되지 않을 수 있습니다.
그중 대표적인 것이 앱의 패키지명을 유일성이 확보된 문자열로 지정해야 한다는 것입니다.
패키지명이 "com.example"이면 앱을 등록할 수 없다는 오류가 발생합니다. 패키지명에 관한 내용은
이후에 자세하게 설명하므로, 이곳에서는 먼저 해당 오류를 해결하고 AAB 파일로 앱을 배포하는
과정에 대해 설명하도록 하겠습니다.

안드로이드 스튜디오의 프로젝트 탐색 창에서 아래 그림처럼 'Gradle Scripts' 그룹을 확장하면
'build.gradle (Module: AndroidLab.app)'이라는 파일이 보입니다.

 

이 파일을 열어보면 다음과 같은 코드가 보입니다.

 

이 부분에서 applicationId 값에 "com.example"이라는 단어가 들어가면 앱을 배포할 수 없습니다.
이 부분을 고유한 이름으로 적절하게 변경해야 합니다. 여기까지 준비되었다면 이제 앱 배포를 진행하면
됩니다.
안드로이드 스튜디오에서 [Build → Generate Signed Bundle / APK] 메뉴를 선택합니다.

 

다음 그림처럼 배포 방법을 선택하는 창이 나타납니다. 'Android App Bundle'과 'APK' 중
'Android App Bundle'이 선택된 상태에서 <Next>를 누릅니다.

 

 

안드로이드 앱은 키(Key)로 서명해야 배포할 수 있습니다. 개발자가 지정한 패키지명으로 안드로이드
앱이 식별되기에, 여러 앱을 같은 키로 서명해도 됩니다. 한 회사에서 여러 개의 앱을 만든다면 앱마다
다른 키로 서명할 수도 있고, 같은 키로 서명하여 배포할 수도 있습니다.
다른 앱을 개발할 때 사용했던 키가 있으면 다음 화면에서 <Choose existing>을 눌러 키를 지정하고,
키가 없다면 <Create new>를 눌러 새로운 키를 만듭니다.

 

<Create new>를 누르면 다음 그림처럼 새로운 키 파일과 키를 만들 수 있는 창이 나타납니다. 이
창에서 'Key store path' 부분의 오른쪽에 있는 폴더 모양 아이콘을 누릅니다.

 

그러면 키 파일의 정보를 설정하는 창이 나타납니다. 키 파일을 저장한 디렉터리 위치와 파일명을
입력하고 <OK>를 누릅니다.

 

다음은 만들어진 키 파일과 키에 대한 정보를 설정합니다. 윗부분은 키 파일에 대한 정보이며,
아랫부분은 키에 대한 정보입니다. 비밀번호(Password)는 모두 6자 이상이어야 하며, 그 밖에 키에
대한 다양한 정보를 설정할 수 있습니다. 적절한 정보를 입력하고 <OK>를 누릅니다.

 

다음은 만들어진 키 파일과 정보를 확인하는 창입니다. <Next>를 눌러 다음을 진행합니다.

 

키가 생성되면 해당 키로 서명된 AAB 파일을 추출하는 과정이 진행됩니다. 'Destination Folder'
부분의 오른쪽에 있는 폴더 모양 아이콘을 눌러 AAB 파일을 저장할 위치를 지정합니다. 'Build

Variants'에서 'release'를 선택한 후, <Finish>를 누르면 키로 서명된 AAB 파일이 만들어집니다. 이
AAB 파일을 배포하면 됩니다.

 

빌드 작업이 진행된 후 AAB 파일이 성공적으로 추출되면, 안드로이드 스튜디오 화면 왼쪽 아래에 다음
그림처럼 "Generate Signed Bundle"이라는 메시지가 나타납니다.

 

앞서 지정한 대상 폴더(Destination Folder)에 AAB 파일이 생성됩니다.

 

책의 모든 내용을 저자 직강으로 진행한 강의는 ssamz.com 에서 들으실 수 있습니다.