노트 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를 이 사이트에 넣은 사례. 프론트엔드 개발자가 알아야 할 개념을 구현 순서대로 짚는다.