안드로이드 aar apk 차이점 및 비교
✨ 개요
안드로이드 개발을 하다 보면 AAR과 APK라는 두 가지 파일 포맷을 자주 접하게 됩니다. 둘 다 안드로이드 빌드 결과물이지만 용도와 성격이 다르기 때문에 정확히 이해하고 쓰는 것이 중요합니다.
이번 글에서는 아래의 주제를 다룹니다
- AAR과 APK의 개념
- 주요 차이점
- 실무 활용 예시와 주의사항
1. AAR이란?
AAR(Android ARchive) 은 안드로이드 라이브러리 모듈을 배포하기 위한 아카이브 파일입니다.
특징
- 라이브러리 모듈을 빌드할 때 생성
- Java/Kotlin 클래스, 리소스(res), manifest, proguard 설정, R.java 파일 등을 포함
- 다른 앱 프로젝트에 라이브러리로 추가해 재사용 가능
classes.jar // 컴파일된 클래스 파일
AndroidManifest.xml
res/ // 리소스 폴더
R.txt
proguard.txt
활용 사례
- 공통 UI 컴포넌트, 유틸 모듈, SDK 형태로 제공
- 사내 공용 모듈을 여러 앱에서 공유
- 외부에서 배포되는 서드파티 라이브러리 (예: Firebase, Glide)
2. APK란?
APK(Android Package) 는 우리가 사용자에게 배포하는 최종 앱 패키지입니다. 사용자가 설치하는 앱 파일이 바로 APK입니다.
특징
- 앱 모듈을 빌드할 때 생성
- 앱 실행에 필요한 모든 리소스, 컴파일된 코드, manifest 포함
- 안드로이드 단말에서 직접 설치(.apk) 가능
classes.dex // Dalvik 바이트코드
AndroidManifest.xml
res/
lib/ // NDK 라이브러리
META-INF/ // 서명 정보
활용 사례
- Google Play 스토어 배포
- 사내 테스트용 앱 배포 (내부 배포, QA 테스트)
- CI/CD에서 자동 빌드 후 QA팀 공유
3. AAR vs APK 비교
구분 | AAR | APK |
---|---|---|
용도 | 라이브러리 배포 | 최종 사용자용 앱 배포 |
설치 가능 여부 | ❌ 직접 설치 불가 | ✅ 단말에 직접 설치 가능 |
포함 요소 | classes.jar, 리소스, Manifest | classes.dex, 모든 리소스, lib, 서명 |
빌드 대상 | library module | application module |
예시 | Glide, Firebase SDK | 카카오톡, 네이버 앱 |
4. 빌드 및 사용 방법
✅ AAR 빌드하기
- Gradle의 library 모듈에서 ./gradlew assembleRelease 실행
- module/build/outputs/aar/ 에 .aar 생성
- 다른 프로젝트의 build.gradle 에 아래처럼 추가
implementation files('libs/mylibrary-release.aar')
✅ APK 빌드하기
- Android Studio: Build > Build Bundle(s)/APK(s) > Build APK(s)
CLI: ./gradlew assembleRelease
5. 실무 팁 & 주의사항
- 공통 모듈 개발 시 : AAR로 배포하면 유지보수가 쉽다.
- 리소스 충돌 : AAR을 사용할 때는 리소스 이름 충돌에 주의.
- Proguard/R8 설정 : AAR에 포함된 proguard.txt를 앱 빌드 시 함께 적용해야 함.
- 테스트 : AAR은 단독 실행 불가 → 반드시 앱 모듈에서 참조 후 테스트.
6. 핵심 요약
- AAR : 라이브러리를 재사용·배포하기 위한 개발자용 패키지
- APK : 사용자 기기에 설치되는 최종 앱 패키지
개발 단계에서는 AAR을 통한 모듈화가 유지보수와 배포 효율성을 높여줍니다. 최종적으로는 APK로 빌드해 사용자에게 배포하는 것이 목표입니다.