Android Gradle 플러그인 8.2.0 (2023년 11월)
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Android Gradle 플러그인 8.2.0은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.
호환성
Android Gradle 플러그인 8.2에서 지원하는 최대 API 수준은 API 수준 34입니다.
다음은 기타 호환성 정보입니다.
|
최소 버전 |
기본 버전 |
참고 |
Gradle |
8.2 |
8.2 |
자세한 내용은 Gradle 업데이트하기를 참고하세요. |
SDK 빌드 도구 |
34.0.0 |
34.0.0 |
SDK 빌드 도구를 설치 또는 구성합니다. |
NDK |
해당 사항 없음 |
25.1.8937393 |
다른 버전의 NDK를 설치 또는 구성합니다. |
JDK |
17 |
17 |
자세한 내용은 JDK 버전 설정을 참고하세요. |
JDK 경로를 지정하는 새 매크로
#GRADLE_LOCAL_JAVA_HOME
은 JDK 경로를 지정하는 데 사용할 수 있는 새로운 매크로입니다. 이를 통해 프로젝트의 Gradle 데몬(백그라운드 프로세스) 실행에 사용되는 Java 홈 경로를 더 안전하고 쉽게 지정할 수 있습니다. 경로 선택 사항은 .gradle/config.properties
파일의 java.home
필드에 저장됩니다. 이 필드는 Android 스튜디오의 Gradle JDK 설정 (File 또는 macOS의 경우 Android 스튜디오) > Settings > Build, Execution, Deployment > Build
Tools > Gradle을 통해 설정합니다.
새 프로젝트는 기본적으로 #GRADLE_LOCAL_JAVA_HOME
을 사용합니다. #JAVA_HOME
과 같은 매크로를 이미 사용하고 있지 않은 한, 기존 프로젝트는 성공적인 동기화 후에 자동으로 새 매크로로 이전됩니다.
새 매크로의 주요 이점은 다음과 같습니다.
- JDK 경로를 수동으로 수정하여 먼저 프로젝트를 열지 않고도 동기화를 트리거할 수 있습니다.
- Gradle JDK 선택 사항에 대한 단일 정보 소스를 갖게 되므로 호환되지 않는 Gradle 및 프로젝트 JDK 버전과 관련된 오류가 줄어듭니다.
해결된 문제
Android Gradle 플러그인 8.2.0
해결된 문제 |
Android Gradle 플러그인 |
맞춤 소스 유형에서 여러 종류의 소스 세트를 만들어야 함
|
SDK 버전 확인에서 SDK 확장 프로그램의 사용자를 처리하지 않음
|
DependenciesInfoBuilder에 API 업데이트 및 문서가 필요함
|
Java 11 타겟인 DexingNoClasspathTransform(minSdk >= 24)이 중첩 멤버 누락으로 인해 실패함
|
DslExtension.Builder.extendProjectWith()가 Groovy에 설명된 대로 작동하지 않음
|
kotlin.Pair를 사용하지 않는 VariantSelector.withFlavor API 추가
|
`proguard.txt`가 변경되었기 때문에 AndroidLintAnalysisTask( :lintAnalyzeExternalRelease)에 캐시 부적중이 발생함
|
앱의 병합된 매니페스트에 종속 항목의 extractNativeLibs 속성 및 useEmbeddedDex 속성이 있음
|
빌드 도구 33.0.0에서 AIDL이 실패함
|
AGP: AIDL 도구 및 프레임워크 AIDL 파일의 경로를 공개 API로 노출함
|
요청: IDE에서 'PermittedSubclasses requires ASM9'의 수정사항을 제공해야 함
|
AGP를 컴파일할 때 바이트 코드 17 타겟팅
|
VariantManager.getModifiedName 삭제
|
AndroidTest.packaging.jniLibs.keepDebugSymbols가 androidTest 패키징에 영향을 주지 않음
|
GMD 계측 테스트 작업이 중단되고 재시도 시 실패함
|
agp 8.1.0의 generateLocaleConfig가 비확정적인 순서를 사용하여 재현 가능한 빌드를 손상시킴
|
ProcessApplicationManifest.navigationJsons에 절대 경로가 포함된 파일이 있음
|
AnalyticsService가 생성된 후 AnalyticsConfiguratorService를 통해 GradleBuildProject.Builder에 액세스할 수 없음
|
AndroidTest.packaging.jniLibs.keepDebugSymbols가 androidTest 패키징에 영향을 주지 않음
|
잘못된 색상 값의 컴파일이 허용됨
|
VariantBuilder의 잘못된 'ReplaceWith'
|
Gradle 8.1에서 .gradle/.android/analytics.settings로 인해 구성 캐싱이 중단됨
|
지원 중단 메시지에서 'ReplaceWith'가 사용되지 않음
|
기본 NDK 버전을 가져오는 방법 노출
|
Android Gradle 플러그인을 실행하려면 Java 17 필요
|
ASM 변환과 toAppend()가 호환되지 않음
|
KMP 프로젝트에서 Gradle을 통해 K2 UAST로 린트를 실행할 때 린트 오류가 수정됨
|
변형 수준 missingDimensionStrategy 지원(빌드 유형/버전 matchingFallback 지원 가능성)
|
Android 스튜디오 Giraffe에서 'android.injected.studio.version'이 삭제됨
|
AndroidXDependencyCheck를 사용 중지하는 기능이 추가됨
|
agp 8.1.0의 generateLocaleConfig가 비확정적인 순서를 사용하여 재현 가능한 빌드를 손상시킴
|
AAR 메타데이터의 R8/D8 버전 요구사항 알림(예: coreLibraryDesugaring 및 새로운 API의 아웃라인 사용 시)
|
동기화 경고: 'AnalyticsService가 생성된 후 AnalyticsConfiguratorService를 통해 GradleBuildProject.Builder에 액세스할 수 없음'
|
Gradle 8.2 마일스톤 또는 RC로 업데이트
|
'java.lang.Comparable'에 액세스할 수 없음
|
Android 라이브러리 모듈에서 androidResources를 사용할 수 없음
|
AGP를 8.0.2에서 8.1.0으로 업데이트한 후 ':app:mergeReleaseClasses' 작업 실행에 실패함
|
Gradle 8.1에서 .gradle/.android/analytics.settings로 인해 구성 캐싱이 중단됨
|
[AGP 8.1.0] splits.abi.isEnable과 testOptions.unitTests.isIncludeAndroidResources가 모두 true인 경우 ./gradlew 테스트가 실패하고 "Unable to find manifest output" 발생
|
Android 스튜디오 Giraffe가 AGP 8.1에서 versionCodeOverride를 준수하지 않음
|
계측 테스트를 실행한 후 AGP 8.1.0이 앱을 제거함 - 7.4.2는 제거하지 않음
|
APK를 변환하면 ListingFileRedirectTask 오류가 발생함
|
HEDGEHOG REGRESSION: 실행 버튼이 몇 초 지연됨(사양 생성 중)
|
|
Dexer(D8) |
min-api 34 이상에서 덱싱할 때 네이티브 레코드 및 봉인 클래스 사용 설정
|
|
린트 |
인스턴스화된 린트 검사가 AppComponentFactory를 제대로 처리하지 않음
|
린트 8.2.0 알파 버전이 여전히 Kotlin에서 최상위 함수 가져오기를 지원하지 않음
|
린트 기준에 줄 및 열 번호를 포함하지 않는 옵션 추가
|
린트 기준에 줄 및 열 번호를 포함하지 않는 옵션 추가
|
린트 테스트는 Java 17 언어 기능을 지원하지 않음
|
Bumblebee 2021.1.1 패치 1에 commons-io의 이전 버전(20030203.000550)이 2.11.0보다 최신이라고 표시됨
|
린트 8.2.0 알파 버전이 여전히 Kotlin에서 최상위 함수 가져오기를 지원하지 않음
|
Bumblebee 2021.1.1 패치 1에 commons-io의 이전 버전(20030203.000550)이 2.11.0보다 최신이라고 표시됨
|
Android 스튜디오가 지정된 버전을 오래된 버전으로 잘못 표시함
|
K2 UAST를 사용할 때 린트에서 UseValueOf 문제가 무시됨
|
Android 린트에서 신고된 다른 프로젝트에서 예상치 못한 문제가 발생함
|
KMP 라이브러리에서 Android 린트가 실패하고 `property 'variantInputs.name' doesn't have a configured value`가 발생함
|
|
린트 통합 |
testImplementation 종속 항목으로 인한 DuplicatePlatformClasses 린트 오류
|
|
축소기(R8) |
java.lang.VerifyError: 인증 도구에서 클래스를 거부함
|
Apache POI 라이브러리를 사용할 때 빌드가 :minifyReleaseWithR8에서 멈춤
|
Kotlin 1.9로 인해 null 검사가 제거되면 R8에 의해 Kotlin 람다가 소멸됨
|
|
Android Gradle 플러그인 8.2.1
해결된 문제 |
Android Gradle 플러그인 |
하위 프로젝트의 클래스가 아티팩트 변환을 통해 이미 덱싱되었으므로 하위 프로젝트의 클래스에서 덱싱 작업을 실행하지 않음
|
JavaVersion.VERSION_11 및 OpenJDK 21 ea 사용 시 Android Gradle 플러그인이 실패함
|
|
Dexer(D8) |
|
축소기(R8) |
R8이 손상된 dex를 생성하여 런타임 시 클래스 변환 예외가 발생함
|
R8로 인해 인터페이스가 액세스할 수 없는 인터페이스로 변경됨
|
AGP 8.2.0에서 R8 Flurry SDK 비정상 종료
|
Android - R8로 인해 LinearLayoutManager의 서브클래스가 비정상 종료됨
|
리패키징이 사용 설정되어 있고 축소, 난독화, 최적화가 사용 중지된 경우 R8에서 ClassCastException이 발생함
|
BridgeAnalyzer.analyzeMethod에서 R8이 멈춤
|
R8 v8.2.33에서 'java.lang.VerifyError: 피연산자 스택의 잘못된 유형' 런타임이 업그레이드 후 비정상 종료됨
|
|
Android Gradle 플러그인 8.2.2
해결된 문제 |
Android Gradle 플러그인 |
AGP 8.2.0에서 JaCoCo 버전을 설정할 수 없음
|
|
Dexer(D8) |
[디슈가링된 라이브러리] 디슈가링된 라이브러리 버전 2.1이 이전 버전의 R8과 호환되지 않음
|
D8에서만 최적화가 실행됨
|
|
축소기(R8) |
[R8 8.3.21] R8 8.3.21이 R8 8.1.56보다 1.57MB 더 큼
|
class.getInterfaces()에서 빈 값 반환
|
|
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-02-28(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-02-28(UTC)"],[],[]]