노트

AAB와 APK

Android App Bundle and Android Package

프론트엔드#tooling · 연결된 개념 2개

쉽게 말하면

APK는 다 조립된 완제품 가구고, AAB는 부품 상자예요. 구글 플레이가 상자에서 내 기기에 맞는 부품만 골라 조립해 보내 주니까 사용자가 받는 파일이 작아져요.

비유의 한계 부품 상자라서 기기에 바로 설치할 수는 없어요. 직접 테스트하려면 APK를 따로 만들고, 최종 APK는 Google이 보관하는 앱 서명 키로 서명돼요.

Android 앱을 배포하는 두 가지 패키지 형식이다.

  • APK(Android Package): 기기에 바로 설치되는 완성된 설치 파일. 하나의 APK에 모든 화면 밀도용 리소스와 모든 CPU(Central Processing Unit) 아키텍처용 코드를 담으면 파일이 커진다
  • AAB(Android App Bundle, .aab): 설치 파일이 아니라 재료 묶음. Google Play에 올리면 Play가 사용자 기기의 화면 밀도, CPU, 언어에 맞는 부분만 골라 최적화된 APK를 만들어 내려보낸다. 그래서 사용자가 받는 크기가 작다

실무 포인트

  • Google Play는 2021년 8월부터 새 앱을 AAB로만 받는다(2026 기준)
  • AAB는 기기에 바로 설치할 수 없다. 기기에서 직접 테스트할 때는 APK를 만든다
./gradlew bundleRelease     # Play 업로드용 AAB
./gradlew assembleRelease   # 기기 설치용 APK (adb install)
  • AAB는 Play 앱 서명(Play App Signing)과 한 묶음이다. 최종 APK는 Google이 보관하는 앱 서명 키로 서명되고, 개발자가 가진 키스토어는 업로드하는 AAB에 서명해 올린 사람이 맞는지 증명하는 업로드 키(Upload Key) 역할을 한다. 업로드 키를 잃어버려도 재설정을 요청할 수 있다
  • iOS에서 App Store Connect에 올리는 .ipa가 Android의 AAB에 해당하는 위치다

번들을 작게 만드는 생각은 웹의 코드 스플리팅과 동적 임포트, 번들 크기 줄이기과 비슷하다. 필요한 부분만 골라 보낸다.

출처: Android 개발자 문서 - About Android App Bundles · Play App Signing

연결된 개념

이 노트를 가리키는 문서

아직 없습니다.

뜻이 가까운 노트

  • 생성과 평가 분리

    결과물을 만드는 에이전트와 판정하는 에이전트를 나눈다. 자기 결과를 스스로 채점하면 관대해지기 때문이다. 판정은 가능한 한 결정론적 검증기에 먼저 맡긴다.

  • 웹뷰 브리지(웹↔네이티브 통신)

    앱 안의 웹뷰에서 웹과 네이티브가 서로 말을 거는 길. User-Agent 표식, 메시지 핸들러, 스크립트 실행, URL(딥링크)이 있다.

  • 모바일 네이티브 저장소

    앱을 다시 실행해도 남도록 iOS·Android 앱이 네이티브 코드로 쓰는 저장소. 설정값, 구조화된 데이터, 비밀 값마다 쓰는 API가 다르고, 웹뷰의 localStorage와는 자동으로 공유되지 않는다.

  • Pages Router에서 App Router로

    App Router는 Next.js 13에서 도입된 app/ 디렉터리 기반 라우터로, 서버 컴포넌트·중첩 레이아웃(Nested Layouts)·스트리밍을 기본으로 한다. pages/ 기반의 Pages Router에서 옮길 때 바뀌는 생각을 정리한다.

  • 커넥션 드레이닝과 무중단 재시작

    배포 중 서버를 재시작하는 몇 초 동안 로드밸런서가 그 서버로 요청을 보내면 502가 난다. 먼저 로드밸런서에서 빼고(드레이닝), 진행 중인 요청을 마친 뒤 재시작하고, 준비되면 다시 넣는다.

보기 옵션