Android Gradle 플러그인 9.2.0 (2026년 4월)

Android Gradle 플러그인 9.2는 다양한 새 기능과 개선사항이 포함된 부 버전입니다.

호환성

Android Gradle 플러그인 9.2에서 지원하는 최대 API 수준은 API 수준 37.0입니다. 다음은 기타 호환성 정보입니다.

최소 버전 기본 버전 참고
Gradle 9.4.1 9.4.1 자세한 내용은 Gradle 업데이트하기를 참고하세요.
SDK 빌드 도구 36.0.0 36.0.0 설치 또는 구성 SDK 빌드 도구.
NDK 해당 사항 없음 28.2.13676358 다른 버전의 NDK를설치 또는 구성합니다.
JDK 17 17 자세한 내용은 JDK 버전 설정을 참고하세요.

통합 적용 범위 및 테스트 보고서

AGP 9.2.0-alpha07에서는 다양한 테스트 유형 (단위 및 계측), 모듈, 빌드 변형의 테스트 결과와 적용 범위를 통합하여 단일 대시보드에서 포괄적인 개요를 제공하는 HTML 대시보드를 생성하는 작업을 도입합니다. 자세한 내용은 통합 코드 적용 범위 보고서 생성통합 테스트 보고서 보기를 참고하세요.

R8 변경사항

다음 R8 변경사항이 AGP 9.2.0에 포함되어 있습니다.

런타임에 표시되지 않는 주석을 유지하기 위한 더 엄격한 -keepattributes 의미

런타임에 표시되지 않는 주석은 런타임에 읽을 수 없습니다. 따라서 D8은 런타임에 표시되지 않는 주석을 무조건 삭제하며 이를 변경할 수 있는 옵션이 없습니다.

ProGuard와의 호환성을 위해 R8은 런타임에 표시되지 않는 주석 출력을 지원합니다. 하지만 DEX로 컴파일할 때는 일반적으로 런타임에 표시되지 않는 주석을 유지해서는 안 됩니다. 하지만 R8이 런타임에 표시되는 주석을 유지하도록 편리한 규칙 -keepattributes *Annotation*을 포함하는 것이 일반적입니다 (소비자 유지 규칙에서 직접 또는 간접적으로). 안타깝게도 이렇게 하면 런타임에 표시되지 않는 주석도 유지됩니다.

이 문제를 완화하고 D8 동작과 더 잘 일치하도록 와일드 카드가 있는 -keepattributes 패턴은 더 이상 RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations, RuntimeInvisibleTypeAnnotations와 일치하지 않습니다. 따라서 런타임에 표시되지 않는 주석은 와일드 카드 없이 속성 이름이 명시적으로 언급된 경우에만 유지됩니다.

이제 다음 규칙은 런타임에 표시되지 않는 주석을 유지하지 않습니다.

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

런타임에 표시되지 않는 주석을 유지하려면 다음 규칙을 사용하세요.

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

멤버 규칙에서 부정된 이름 지원

이제 부정된 멤버 이름 패턴과 일치하도록 구성 언어가 확장되었습니다.

예를 들어 'ForTesting'으로 끝나지 않는 모든 메서드와 일치시키려면 다음 규칙을 사용하세요.

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

멤버 이름 패턴은 -if 규칙의 전제 조건에서 부정될 수도 있습니다. 부정된 멤버 이름 패턴에 와일드 카드가 포함되어 있으면 이러한 와일드 카드는 -if 결과 규칙에서 역참조될 수 없습니다.

해결된 문제

Android Gradle 플러그인 9.2.1

해결된 문제
Android Gradle 플러그인
java.lang.ClassNotFoundException: Gradle을 9.2.0으로 업그레이드한 후 'com.android.tools.r8.RecordTag' 클래스를 찾지 못함

Android Gradle 플러그인 9.2.0

해결된 문제
Android Gradle 플러그인
commonTest가 있지만 withHostTestBuilder를 잊은 경우 사용자에게 경고
[융합 라이브러리 - 공개] OkHttp에 소스가 포함됨
라이브러리에서 매니페스트 자리표시자가 있는 androidDeviceTest를 실행할 수 없음 (com.android.kotlin.multiplatform.library 플러그인이 있는 AGP 9.0.0)
사용자가 자바가 사용 중지된 src/androidDeviceTest/java를 사용하는 경우 AGP에서 경고해야 함
AGP 9.0에 applicationVariants.all.mergeAssetsProvider와 동일한 androidComponents.onVariant가 없음
`*.xml.flat` 파일에 절대 파일 경로가 포함됨
R8D8ThreadPoolBuildService가 등록되지 않음
JDK 26에서 JdkImageTransform 실패
AGP 10.0에서 AAR 메타데이터의 minAgpVersion 자동 인코딩
새 AGP DSL을 사용하여 APK 이름 바꾸기
bootClasspath에 액세스할 때 오류 (평가하지 않음) IllegalStateException: targetCompatibility가 아직 완료되지 않음
라이브러리에서 keepRules 소스 세트가 작동하지 않음
AGP에 CC 호환성 선언 삽입
Kotlin Gradle 플러그인 종속 항목을 2.3.10으로 업데이트
테스트의 compileSdk를 기본값보다 높게 허용
린트
메시지의 린트 오타
`SarifReporter.kt`에서 오프셋 포인터가 멈춰 린트 SARIF 보고서의 잘린 컨텍스트 창
린트 Gradle 클라이언트에 중요한 기능이 없어 신뢰할 수 없음
리소스 축소가 사용 중지된 경우 린트 오류
AGP 9 린트에서 중첩된 IntDef 상수를 사용할 때 WrongConstant를 보고함
리소스 축소가 사용 중지된 경우 린트 오류
린트 통합
자바 21 바이트 코드로 컴파일된 맞춤 린트 검사로 인해 Android 린트가 실패함
린트 Gradle 작업에서 --quiet 플래그를 무시함
축소기 (R8)
자바 11을 타겟팅하면 d8이 중단되는 것으로 보임