노트

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(딥링크)이 있다.

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

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

  • 스프링 부트 자동 설정

    스프링 부트는 스프링 앱을 만들 때 반복되던 설정(의존성 버전 맞추기, 서블릿 컨테이너 연결, 배포)을 관례(convention over configuration)로 대신해 주는 도구다. 클래스패스(classpath)에 무엇이 있는지 보고 필요한 빈을 자동으로 등록하고, 웹 서버를 내장해 java -jar 하나로 실행된다.

  • 브라우저 안에서 도는 RAG 구현기

    서버·요금 없이 방문자 브라우저에서 EmbeddingGemma 2로 찾고 Gemma 4로 답하는 RAG를 이 사이트에 넣은 사례. 프론트엔드 개발자가 알아야 할 개념을 구현 순서대로 짚는다.

보기 옵션