LIT-android-gradle-plugin-overview
2026-02-20
topic/android
요약
AGP(Android Gradle Plugin)는 Android 앱을 빌드하기 위해 Gradle 위에 올라가는 플러그인이다. build.gradle에서 com.android.tools.build:gradle:버전으로 선언한다.
AGP가 하는 일
Android 앱을 빌드하려면 일반적인 Java/Kotlin 컴파일 외에 Android 전용 단계들이 필요하다. AGP가 이 전체 파이프라인을 관리한다:
- 리소스 컴파일 (AAPT2):
res/폴더의 XML 레이아웃, 이미지, 문자열 등을 바이너리 형식으로 컴파일 - 매니페스트 병합: 앱과 라이브러리들의 AndroidManifest.xml을 하나로 합침
- Java/Kotlin 컴파일: 소스 코드를 바이트코드로 컴파일
- DEX 변환: JVM 바이트코드를 Android 런타임(ART)용 DEX 바이트코드로 변환
- R8 축소/난독화: 미사용 코드 제거, 클래스명 난독화 (선택)
- 패키징: APK 또는 AAB 파일로 묶음
- 서명: keystore로 디지털 서명
AGP 없이는 안 되는 이유
Gradle 자체는 범용 빌드 도구여서 Android에 대해 아무것도 모른다. DEX 변환이 뭔지, APK를 어떻게 만드는지, 리소스를 어떻게 컴파일하는지 모른다. AGP가 이 모든 Android 전용 빌드 로직을 Gradle task로 등록해서 ./gradlew assembleDebug 한 줄로 전체 파이프라인이 돌아가게 만든다.
버전 호환성 체인
AGP 버전 하나가 전체 빌드 도구 체인을 결정한다:
targetSdk 35 → compileSdk 35 필요 → AGP 8.7+ 필요 → Gradle 8.9+ 필요 → JDK 17+ 필요
Android Studio는 이 체인을 내부적으로 관리해주지만, CLI 빌드나 CI에서는 직접 맞춰야 한다.
나의 생각
Android Studio가 "마법처럼" 해주는 빌드가 실제로는 AGP가 등록한 수십 개의 Gradle task가 순서대로 실행되는 것이다. ./gradlew tasks를 치면 AGP가 등록한 task 목록을 볼 수 있다.
Links
- 원본: REF-android-dev-android-gradle-plugin
- 관련 Permanent Note: agp-version-determines-entire-android-build-toolchain