Android App Bundle(AAB)은 Google Play에 업로드하는 배포 형식이다. 안드로이드 (운영체제)용 앱의 코드와 리소스를 하나의 번들로 묶고, 최종 APK 조합과 서명은 배포자가 처리한다.[1][5] 그래서 AAB는 설치용 앱 파일이 아니라 배포 입력물에 가깝다.[1][3]

1. 개요

AAB의 핵심은 기기별로 다른 APK를 만들기 위한 중간 형식이라는 점이다. 안드로이드 (운영체제)에서 리소스와 화면 밀도, 언어가 달라지는 만큼, App Bundle은 앱을 그 차이에 맞춰 더 작게 전달하도록 돕는다.[1][2] 앱 개발자는 하나의 번들을 관리하지만, 사용자에게 전달되는 결과물은 기기 구성에 맞는 APK 세트가 된다.[2][4]

2. 작동 방식

bundletool은 App Bundle을 기반으로 base APK, feature module APK, configuration APK를 생성하고, 연결된 기기나 지정한 기기 사양에 맞는 APK 세트를 만든다.[4] 이 과정은 AOSP 자체를 바꾸는 일이 아니라, AAB를 배포용 APK로 변환하는 별도 단계이며, 모듈과 리소스 선택을 포함한 배포 파이프라인의 출발점이다.[2][4]

3. Google Play와의 관계

Google Play에 새로 제출하는 앱은 2021년 8월부터 App Bundle 형식을 사용해야 하며, Play App Signing이 업로드 키와 앱 서명 키를 분리해 배포 서명을 처리한다.[5] 따라서 AAB는 Google Play의 업로드, 서명, 릴리스 정책과 함께 읽어야 정확하다.[5]

4. 장단점

장점은 기기별 최적화, 더 작은 다운로드, feature module과 Play Asset Delivery 같은 기능을 자연스럽게 쓰기 쉽다는 점이다.[1][2] 단점은 AAB가 직접 설치용 배포 파일이 아니어서, Play가 아닌 다른 배포 경로를 쓰려면 그 경로가 App Bundle을 지원해야 한다는 점이다.[3][5]

5. 개발자 관점

개발자는 AAB를 쓰면서 앱 구조를 더 모듈화해야 하고, 릴리스와 배포를 Google Play의 도구와 정책에 맞춰 설계해야 한다. 반면 AOSP안드로이드 (운영체제) 자체를 이해하는 데서 끝나는 것이 아니라, 실제 배포 경로까지 포함해 앱 생애주기를 보게 된다는 점이 AAB의 의미다.[1][5]

6. 관련 문서

7. 인용 및 각주

[1] About Android App Bundles, Android Developers, Ddeveloper.android.com(새 탭에서 열림)

[2] The Android App Bundle format, Android Developers, Ddeveloper.android.com(새 탭에서 열림)

[3] Android App Bundle frequently asked questions, Android Developers, Ddeveloper.android.com(새 탭에서 열림)

[4] bundletool, Android Developers, Ddeveloper.android.com(새 탭에서 열림)

[5] Sign your app, Android Developers, Ddeveloper.android.com(새 탭에서 열림)