Android Gradle 플러그인 미리보기 출시 노트

이 페이지에는 Android Gradle 플러그인 (AGP)의 미리보기 버전 출시 노트가 포함되어 있습니다.

Android Gradle 플러그인 9.0

Android Gradle 플러그인 9.0은 AGP의 새로운 주요 버전으로, API 및 동작 변경사항이 적용됩니다.

Android Gradle 플러그인 9.0.0-beta04로 업데이트하려면 Android 스튜디오 Otter 3 Feature Drop | 2025.2.3에서 Android Gradle 플러그인 업그레이드 어시스턴트를 사용하세요.

AGP 업그레이드 어시스턴트는 적절한 경우 프로젝트를 업그레이드할 때 기존 동작을 유지하여 AGP 9.0의 새로운 기본값을 모두 채택할 준비가 되지 않았더라도 AGP 9.0을 사용하도록 프로젝트를 업그레이드할 수 있습니다.

호환성

Android Gradle 플러그인 9.0.0-beta04에서 지원하는 최대 Android API 수준은 API 수준 36입니다.

Android Gradle 플러그인 9.0.0-beta04에는 Gradle 9.0.0이 필요합니다.

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

이제 android DSL 클래스는 새로운 공개 인터페이스만 구현합니다.

지난 몇 년 동안 Google은 공개 API를 더 잘 제어하기 위해 DSL 및 API용 새 인터페이스를 도입했습니다. AGP 버전 7.x 및 8.x에서는 인터페이스 작업이 진행됨에 따라 호환성을 유지하기 위해 새로운 공개 인터페이스도 구현하는 이전 DSL 유형 (예: BaseExtension)을 계속 사용했습니다.

AGP 9.0은 새로운 DSL 인터페이스만 사용하며 구현이 완전히 숨겨진 새로운 유형으로 변경되었습니다. 또한 지원 중단된 이전 변형 API에 대한 액세스도 삭제됩니다.

AGP 9.0으로 업데이트하려면 다음을 수행해야 할 수 있습니다.

  • 프로젝트가 내장 Kotlin과 호환되는지 확인: org.jetbrains.kotlin.android 플러그인은 새 DSL과 호환되지 않습니다.
  • KMP 프로젝트를 KMP용 Android Gradle 라이브러리 플러그인으로 전환: com.android.librarycom.android.application 플러그인과 동일한 Gradle 하위 프로젝트에서 org.jetbrains.kotlin.multiplatform 플러그인을 사용하는 것은 새 DSL과 호환되지 않습니다.

  • 빌드 파일 업데이트: 인터페이스 변경은 DSL을 최대한 유사하게 유지하기 위한 것이지만 약간의 변경사항이 있을 수 있습니다.

  • 새 DSL 및 API를 참조하도록 맞춤 빌드 로직을 업데이트합니다. 내부 DSL에 대한 참조를 공개 DSL 인터페이스로 바꿉니다. 대부분의 경우 일대일 대체가 됩니다. applicationVariants 및 유사한 API의 사용을 새 androidComponents API로 대체합니다. androidComponents API는 플러그인이 더 오래 호환되도록 더 안정적으로 설계되어 있으므로 이 방법이 더 복잡할 수 있습니다. 예는 Gradle 레시피를 참고하세요.

  • 서드 파티 플러그인 업데이트: 일부 서드 파티 플러그인은 더 이상 노출되지 않는 인터페이스나 API를 계속 사용할 수 있습니다. AGP 9.0과 호환되는 플러그인 버전으로 이전하세요.

새 DSL 인터페이스로 전환하면 다음과 같은 다양한 지원 중단된 API를 사용하는 플러그인과 Gradle 빌드 스크립트가 방지됩니다.

android 블록의 지원 중단된 API 함수 교체
applicationVariants,
libraryVariants,
testVariants,
unitTestVariants
플러그인이 AGP에 새 기능을 추가할 수 있는 확장 지점 이를 androidComponents.onVariants API로 바꿉니다. 예를 들면 다음과 같습니다.
androidComponents {
    onVariants() { variant ->
        variant.signingConfig
            .enableV1Signing.set(false)
    }
}
이전 API를 모두 직접 대체할 수 있는 API가 없을 수도 있습니다. 새 변형 API로 처리되지 않는 사용 사례가 있는 경우 문제를 신고하세요.
variantFilter 선택한 변형을 사용 중지할 수 있습니다. 이를 androidComponents.beforeVariants API로 바꿉니다. 예를 들면 다음과 같습니다.
androidComponents {
    beforeVariants(
        selector()
            .withBuildType("debug")
            .withFlavor("color", "blue")
    ) { variantBuilder ->
        variantBuilder.enable = false
    }
  }
deviceProvider
testServer
Android 기기 및 에뮬레이터에 대해 테스트를 실행하기 위한 맞춤 테스트 환경 등록 Gradle 관리 기기로 전환합니다.
sdkDirectory,
ndkDirectory,
bootClasspath,
adbExecutable,
adbExe
맞춤 작업에 Android SDK의 다양한 구성요소 사용 androidComponents.sdkComponents으로 전환합니다.
registerArtifactType,
registerBuildTypeSourceProvider,
registerProductFlavorSourceProvider,
registerJavaArtifact,
registerMultiFlavorSourceProvider,
wrapJavaSourceSet
AGP 7.2.0에서 작동이 중지된 Android 스튜디오의 생성된 소스 처리와 관련된 오래된 기능입니다. 이러한 API를 직접 대체할 수 있는 API는 없습니다.
dexOptions d8로 대체된 dx 도구와 관련된 오래된 설정입니다. Android Gradle 플러그인 7.0 이후로는 설정이 적용되지 않습니다. 직접 대체할 수 없습니다.
generatePureSplits 인스턴트 앱의 구성 분할을 생성합니다. 이제 구성 분할을 제공하는 기능이 Android App Bundle에 내장되어 있습니다.
aidlPackagedList 이 라이브러리에 종속된 라이브러리 및 앱의 API로 노출하기 위해 AAR에 패키징할 AIDL 파일입니다. 이 값은 LibraryExtension에서는 계속 노출되지만 다른 확장 프로그램 유형에서는 노출되지 않습니다.

AGP 9.0으로 업데이트한 후 다음 오류 메시지가 표시되면 프로젝트에서 여전히 일부 이전 유형을 참조하고 있는 것입니다.

java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension

호환되지 않는 서드 파티 플러그인으로 인해 차단된 경우 선택 해제하고 DSL의 이전 구현과 이전 변형 API를 다시 가져올 수 있습니다. 이 작업을 하는 동안 새 인터페이스도 사용할 수 있으며 자체 빌드 로직을 새 API로 업데이트할 수도 있습니다. 선택 해제하려면 gradle.properties 파일에 다음 줄을 포함하세요.

android.newDsl=false

AGP 9.0으로 업그레이드하기 전에 새 API로 업그레이드할 수도 있습니다. 새 인터페이스는 여러 AGP 버전에 존재해 왔으므로 새 인터페이스와 이전 인터페이스를 혼합할 수 있습니다. AGP API 참조 문서에는 각 AGP 버전의 API 노출 영역과 각 클래스, 메서드, 필드가 추가된 시기가 표시됩니다.

9.0 알파 단계에서 Google은 플러그인 작성자에게 연락하여 새로운 모드와 완전히 호환되는 플러그인을 적용하고 출시하도록 지원하고, Android 스튜디오의 AGP 업그레이드 어시스턴트를 개선하여 이전 과정을 안내할 예정입니다.

새 DSL 또는 Variant API에 기능이 누락된 경우 최대한 빨리 문제를 신고하세요.

Kotlin 내장

Android Gradle 플러그인 9.0에서는 Kotlin 지원이 내장되어 있으며 기본적으로 사용 설정됩니다. 즉, Kotlin 소스 파일을 컴파일하기 위해 더 이상 빌드 파일에 org.jetbrains.kotlin.android (또는 kotlin-android) 플러그인을 적용하지 않아도 됩니다. 이렇게 하면 AGP와의 Kotlin 통합이 간소화되고, 지원 중단된 API의 사용이 방지되며, 경우에 따라 성능이 개선됩니다.

따라서 프로젝트를 AGP 9.0으로 업그레이드할 때는 내장 Kotlin으로 이전하거나 선택 해제해야 합니다.

Kotlin 소스가 없는 Gradle 하위 프로젝트의 경우 기본 제공 Kotlin 지원을 선택적으로 사용 중지할 수도 있습니다.

Kotlin Gradle 플러그인에 대한 런타임 종속 항목

내장 Kotlin 지원을 제공하기 위해 Android Gradle 플러그인 9.0에는 이제 Kotlin Gradle 플러그인 (KGP) 2.2.10에 대한 런타임 종속성이 있습니다. 즉, 더 이상 KGP 버전을 선언할 필요가 없으며 2.2.10보다 낮은 KGP 버전을 사용하는 경우 Gradle이 KGP 버전을 2.2.10으로 자동 업그레이드합니다. 마찬가지로 KSP 버전이 2.2.10-2.0.2보다 낮은 경우 AGP는 KGP 버전에 맞게 2.2.10-2.0.2로 업그레이드합니다.

상위 KGP 버전으로 업그레이드

더 높은 버전의 KGP 또는 KSP를 사용하려면 최상위 수준 빌드 파일에 다음을 추가하세요.

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:KGP_VERSION")

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin:KSP_VERSION")
    }
}

하위 KGP 버전으로 다운그레이드

내장 Kotlin을 선택 해제한 경우에만 KGP 버전을 다운그레이드할 수 있습니다. AGP 9.0에서는 기본적으로 내장 Kotlin이 사용 설정되며 내장 Kotlin에는 KGP 2.2.10 이상이 필요하기 때문입니다.

더 낮은 버전의 KGP 또는 KSP를 사용하려면 엄격한 버전 선언을 사용하여 최상위 빌드 파일에서 해당 버전을 선언하세요.

buildscript {
    dependencies {
        // For KGP
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
            version { strictly("KGP_VERSION") }
        }

        // For KSP
        classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
            version { strictly("KSP_VERSION") }
        }
    }
}

다운그레이드할 수 있는 최소 KGP 버전은 2.0.0입니다.

테스트 픽스처를 위한 IDE 지원

AGP 9.0에서는 테스트 고정 장치에 대한 Android 스튜디오 IDE 지원이 완전히 제공됩니다.

융합 라이브러리 플러그인

융합 라이브러리 플러그인 (미리보기)을 사용하면 여러 라이브러리를 단일 Android 라이브러리 AAR로 게시할 수 있습니다. 이렇게 하면 사용자가 게시된 아티팩트를 더 쉽게 사용할 수 있습니다.

시작에 관한 자세한 내용은 융합 라이브러리로 여러 Android 라이브러리를 하나로 게시를 참고하세요.

동작 변경사항

Android Gradle 플러그인 9.0에는 다음과 같은 새로운 동작이 있습니다.

동작 권장사항
Android Gradle 플러그인 9.0은 기본적으로 NDK 버전 r28c을 사용합니다. 사용할 NDK 버전을 명시적으로 지정하는 것이 좋습니다.
Android Gradle 플러그인 9.0에서는 기본적으로 라이브러리 소비자가 동일하거나 더 높은 컴파일 SDK 버전을 사용해야 합니다. 라이브러리를 사용할 때는 동일하거나 더 높은 컴파일 SDK를 사용하세요. 이렇게 할 수 없거나 게시하는 라이브러리의 소비자가 전환할 시간을 더 주려면 AarMetadata.minCompileSdk을 명시적으로 설정하세요.

AGP 9.0에는 다음 Gradle 속성의 기본값에 대한 업데이트가 포함되어 있습니다. 이렇게 하면 업그레이드 시 AGP 8.13 동작을 유지할 수 있습니다.

속성 함수 AGP 8.13에서 AGP 9.0으로 변경 권장사항
android.newDsl android 블록의 기존 구현을 노출하지 않고 새 DSL 인터페이스를 사용합니다.
또한 android.applicationVariants과 같은 기존 변형 API에 더 이상 액세스할 수 없습니다.
falsetrue android.newDsl=false를 설정하여 선택 해제할 수 있습니다.
프로젝트에서 사용하는 모든 플러그인과 빌드 로직이 호환되면 선택 해제를 삭제합니다.
android.builtInKotlin 내장 Kotlin을 사용 설정합니다. falsetrue 가능한 경우 내장 Kotlin으로 이전하거나 선택 해제합니다.
android.uniquePackageNames 각 라이브러리에 고유한 패키지 이름이 있어야 합니다. falsetrue 프로젝트 내 모든 라이브러리에 고유한 패키지 이름을 지정합니다. 그렇게 할 수 없는 경우 마이그레이션하는 동안 이 플래그를 사용 중지하면 됩니다.
android.useAndroidx 기본적으로 androidx 종속 항목을 사용합니다. falsetrue androidx 종속 항목을 채택합니다.
android.default.androidx.test.runner 기본적으로 androidx.test.runner.AndroidJUnitRunner 클래스로 기기 내 테스트를 실행하여 지원 중단된 InstrumentationTestRunner의 기본값을 다음으로 대체합니다.
android {
  defaultConfig {
    testInstrumentationRunner = "..."
  }
}
falsetrue AndroidJUnitRunner를 채택하거나 맞춤 testInstrumentationRunner를 명시적으로 지정합니다.
android.dependency.useConstraints 구성 간 종속 항목 제약 조건의 사용을 제어합니다.
AGP 9.0의 기본값은 애플리케이션 기기 테스트 (AndroidTest)에서만 제약 조건을 사용하는 false입니다. true로 설정하면 8.13 동작으로 되돌아갑니다.
truefalse 필요하지 않은 경우 종속 항목 제약 조건을 모든 곳에서 사용하지 마세요. 이 플래그의 새로운 기본값을 수락하면 프로젝트 가져오기 프로세스에서 최적화도 사용 설정되므로 Android 라이브러리 하위 프로젝트가 많은 빌드의 가져오기 시간이 줄어듭니다.
android.enableAppCompileTimeRClass 최종이 아닌 R 클래스에 대해 애플리케이션에서 코드를 컴파일하여 애플리케이션 컴파일을 라이브러리 컴파일과 일치시킵니다.
이렇게 하면 증분성이 개선되고 향후 리소스 처리 흐름의 성능 최적화가 가능해집니다.
falsetrue 많은 프로젝트에서 소스 변경 없이 새로운 동작을 채택할 수 있습니다. R 클래스 필드가 상수(예: switch 사례)가 필요한 곳에 사용되는 경우 연결된 if 문을 사용하도록 리팩터링합니다.
android.sdk.defaultTargetSdkToCompileSdkIfUnset 컴파일 SDK 버전을 앱 및 테스트의 타겟 SDK 버전의 기본값으로 사용합니다.
이 변경사항 이전에는 타겟 SDK 버전이 기본적으로 최소 SDK 버전으로 설정되었습니다.
falsetrue 앱과 테스트의 타겟 SDK 버전을 명시적으로 지정합니다.
android.onlyEnableUnitTestForTheTestedBuildType 테스트된 빌드 유형의 단위 테스트 구성요소만 만듭니다.
기본 프로젝트에서 이전 동작은 디버그 또는 출시를 위해 단위 테스트를 실행하는 것이었지만 이제 디버그를 위한 단일 단위 테스트가 실행됩니다.
falsetrue 디버그와 출시 모두에서 테스트를 실행할 필요가 없는 프로젝트의 경우 변경할 필요가 없습니다.
android.proguard.failOnMissingFiles AGP DSL에 지정된 보관 파일이 디스크에 없으면 오류와 함께 빌드가 실패합니다. 이 변경사항이 적용되기 전에는 파일 이름의 오타로 인해 파일이 자동으로 무시되었습니다. falsetrue 잘못된 ProGuard 파일 선언 삭제
android.r8.optimizedResourceShrinking R8이 클래스와 Android 리소스를 함께 고려하여 더 적은 Android 리소스를 유지하도록 허용합니다. falsetrue 프로젝트의 보관 규칙이 이미 완료된 경우 변경할 필요가 없습니다.
android.r8.strictFullModeForKeepRules 클래스가 유지될 때 기본 생성자를 암시적으로 유지하지 않아 R8이 더 적게 유지할 수 있습니다. 즉, -keep class A는 더 이상 -keep class A { <init>(); }
를 의미하지 않습니다.
falsetrue 프로젝트의 보관 규칙이 이미 완료된 경우 변경할 필요가 없습니다.

기본 생성자를 유지해야 하는 모든 경우에 프로젝트의 유지 규칙에서 -keep class A-keep class A { <init>(); }로 바꿉니다.
android.defaults.buildfeatures.resvalues 모든 하위 프로젝트에서 resValues을 사용 설정합니다. truefalse 다음과 같이 프로젝트의 Gradle 빌드 파일에 설정하여 resValues를 필요한 하위 프로젝트에서만 사용 설정합니다.
android {
  buildFeatures {
    resValues = true
  }
}
android.defaults.buildfeatures.shaders 모든 하위 프로젝트에서 셰이더 컴파일을 사용 설정합니다. truefalse 컴파일할 셰이더가 포함된 하위 프로젝트에서만 셰이더 컴파일을 사용 설정하려면 해당 프로젝트의 Gradle 빌드 파일에서 다음을 설정하세요.
android {
  buildFeatures {
    shaders = true
  }
}
android.r8.proguardAndroidTxt.disallowed AGP 9.0에서는 getDefaultProguardFile()proguard-android.txt가 아닌 proguard-android-optimize.txt만 지원합니다. 이는 proguard-android.txt에 포함된 ­dontoptimize 플래그의 실수로 인한 사용을 방지하기 위한 것입니다. falsetrue proguard-android-optimize.txt 사용과 함께 최적화를 방지하려면 맞춤 proguardFile에서 ­dontoptimize을 명시적으로 지정하면 됩니다. 가능한 경우 이 파일에서 ­dontoptimize 플래그를 삭제하세요. R8 최적화 이점이 줄어듭니다. 그렇지 않은 경우 android.r8.globalOptionsInConsumerRules.disallowed=false을 설정하여 선택 해제하세요.
android.r8.globalOptionsInConsumerRules.disallowed AGP 9.0부터 컨슈머 유지 파일에 문제가 있는 Proguard 구성이 포함된 경우 Android 라이브러리 및 기능 모듈 게시가 실패합니다. ­dontoptimize 또는 ­dontobfuscate과 같은 전역 옵션이 포함된 소비자 유지 파일은 애플리케이션 모듈에서만 사용해야 하며 라이브러리 사용자의 최적화 이점을 줄일 수 있습니다. Android 앱 모듈 컴파일은 미리 컴파일된 종속 항목 (JAR 또는 AAR)에 삽입된 경우 이러한 전역 옵션을 자동으로 무시합니다. 구성.txt (일반적으로 <app_module>/build/outputs/mapping/<build_variant>/configuration.txt와 같은 경로에 있음)에서 # REMOVED CONSUMER RULE: ­dontoptimize와 같은 주석을 확인하여 이 문제가 발생하는 시점을 확인할 수 있습니다. falsetrue 게시된 라이브러리는 호환되지 않는 규칙을 삭제해야 합니다. 내부 라이브러리는 호환되지 않지만 필요한 규칙을 앱 모듈의 proguardFile로 이동해야 합니다. android.r8.globalOptionsInConsumerRules.disallowed=false를 설정하여 선택 해제합니다. 모든 소비자 보관 파일이 호환되면 선택 해제를 삭제합니다.
android.sourceset.disallowProvider AndroidSourceSet DSL을 사용하여 생성된 소스의 제공자를 전달하는 것을 허용하지 않습니다. falsetrue androidComponents에서 Sources API를 사용하여 생성된 소스를 등록합니다.
android.custom.shader.path.required 셰이더 컴파일이 사용 설정된 경우 local.properties에서 셰이더 컴파일러 경로를 명시적으로 설정해야 합니다. falsetrue 프로젝트의 local.propertiesglslc.dir=/path/to/shader-tools를 추가합니다.

삭제된 기능

Android Gradle 플러그인 9.0에서는 다음 기능이 삭제됩니다.

  • 삽입된 Wear OS 앱 지원
    AGP 9.0에서는 Wear OS 앱 삽입 지원이 삭제됩니다. 이는 더 이상 Play에서 지원되지 않습니다. 여기에는 wearApp 구성과 AndroidSourceSet.wearAppConfigurationName DSL이 삭제됩니다. Wear OS에 앱을 게시하는 방법은 Wear OS에 배포를 참고하세요.
  • androidDependenciessourceSets 보고 작업
  • 밀도 분할 APK 지원
    AGP 9.0에서는 화면 밀도에 기반한 분할 APK 생성 지원이 삭제됩니다. 기능과 관련 API가 삭제되었습니다. AGP 9.0 이상을 사용하여 화면 밀도에 따라 APK를 분할하려면 App Bundle을 사용하세요.

DSL 변경

Android Gradle 플러그인 9.0에는 다음과 같은 주요 DSL 변경사항이 있습니다.

  • CommonExtension의 매개변수화가 삭제되었습니다.

    이 변경사항은 향후 소스 수준의 호환성 중단을 방지하기 위한 소스 수준의 호환성 중단일 뿐이지만 블록 메서드를 CommonExtension에서 ApplicationExtension, LibraryExtension, DynamicFeatureExtension, TestExtension로 이동해야 한다는 의미도 있습니다.

    프로젝트를 AGP 9.0으로 업그레이드할 때 이러한 매개변수나 블록 메서드를 사용하는 Gradle 플러그인 코드를 리팩터링하세요. 예를 들어 다음 플러그인은 유형 매개변수를 삭제하고 삭제된 블록 메서드를 사용하지 않도록 업데이트됩니다.

    AGP 8.13

    val commonExtension: CommonExtension<*, *, *, *, *, *> =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig {
            minSdk {
                version = release(28)
            }
        }
    }
    

    AGP 9.0

    val commonExtension: CommonExtension =
            extensions.getByType(CommonExtension::class)
    commonExtension.apply {
        defaultConfig.apply {
            minSdk {
                version = release(28)
            }
        }
    }
    

    일정 범위의 AGP 버전을 타겟팅하는 플러그인의 경우 게터를 직접 사용하면 AGP 버전 9.0 미만과 바이너리 호환됩니다.

DSL 삭제됨

Android Gradle 플러그인 9.0에서 다음이 삭제됩니다.

삭제된 API

Android Gradle 플러그인 9.0에서 다음이 삭제됩니다.

삭제된 Gradle 속성

다음 Gradle 속성은 기본적으로 사용 설정된 기능을 전역적으로 사용 중지하는 방법으로 처음 추가되었습니다.

이러한 기능은 AGP 8.0 이하에서 기본적으로 사용 중지되었습니다. 더 효율적인 빌드를 위해 이러한 기능을 사용하는 하위 프로젝트에서만 사용 설정하세요.

속성 함수 교체
android.defaults.buildfeatures.aidl 모든 하위 프로젝트에서 AIDL 컴파일을 사용 설정합니다. 다음 속성을 해당 프로젝트의 Gradle 빌드 파일에 설정하여 AIDL 소스가 있는 하위 프로젝트에서만 AIDL 컴파일을 사용 설정합니다.
android {
  buildFeatures {
    aidl = true
  }
}
AIDL 소스가 포함된 각 하위 프로젝트의 Gradle 빌드 파일
android.defaults.buildfeatures.renderscript 모든 하위 프로젝트에서 RenderScript 컴파일 을 사용 설정합니다. 렌더스크립트 소스가 있는 하위 프로젝트에서만 렌더스크립트 컴파일을 사용 설정하려면 해당 프로젝트의 Gradle 빌드 파일에서 다음 속성을 설정하세요.
android {
  buildFeatures {
    renderScript = true
  }
}

강제 적용된 Gradle 속성

다음 Gradle 속성을 설정하면 AGP 9.0에서 오류가 발생합니다.

Android Gradle 플러그인 업그레이드 어시스턴트는 이러한 속성을 사용하는 프로젝트를 AGP 9.0으로 업그레이드하지 않습니다.

속성 함수
android.r8.integratedResourceShrinking 이제 리소스 축소는 항상 R8의 일부로 실행되며 이전 구현은 삭제되었습니다.
android.enableNewResourceShrinker.preciseShrinking 이제 리소스 축소는 항상 정확한 리소스 축소를 사용하므로 더 많은 항목을 삭제할 수 있습니다.

해결된 문제

Android Gradle 플러그인 9.0.0-beta04

해결된 문제
Android Gradle 플러그인
AGP의 내장 Kotlin 지원이 Kotlin 소스 세트와 동기화되지 않음
missingDimensionStrategy는 관련 없는 측정기준에서도 자체 이름과 일치하는 버전을 선호합니다.

Android Gradle 플러그인 9.0.0-beta03

해결된 문제
AGP 9.0.0-beta03에서 해결됨으로 표시된 공개 문제가 없습니다.

Android Gradle 플러그인 9.0.0-beta02

해결된 문제
Android Gradle 플러그인
기능 요청: 이상적인 AGP 버전을 속성으로 삽입
SingleArtifact.VERSION_CONTROL_INFO_FILE 안정화
androidTest connectedCheck logcat 출력이 깨짐
린트
AGP 8.11.0: apply(from = "...")를 사용하여 .gradle.kts 파일을 적용할 때 lintAnalyzeRelease 작업이 비정상 종료됨
린트 통합
systemPropertyInputs.javaVersion 차이로 인해 다양한 JDK 공급업체 또는 부 버전에서 AndroidLintAnalysisTask 캐시 부적중 발생

Android Gradle 플러그인 9.0.0-beta01

해결된 문제
AGP 9.0.0-beta01에서 해결된 것으로 표시된 공개 문제가 없습니다.

Android Gradle 플러그인 9.0.0-alpha14

해결된 문제
Android Gradle 플러그인
AGP의 내장 Kotlin 지원이 Kotlin 소스 세트와 동기화되지 않음
소비자 유지 파일에 -dontobfuscate가 포함된 경우 Android 라이브러리 게시 실패
최적화된 리소스의 매핑을 인쇄하는 옵션이 없음
이 단계가 통과된 후 finalizeDsl을 호출하면 오류가 발생하도록 함
jetifier가 사용 중지된 경우에도 AGP가 jetifier 구성을 초기화함
kotlin으로 빌드하면 `kotlin.stdlib.default.dependency` 가 모듈 및 pom 파일에 true인 경우 kotlinStdlib가 컴파일 시간 종속 항목으로 추가되지 않음
린트 통합
Lint는 compileSdk에도 불구하고 설치된 최신 SDK를 자동으로 사용하며, 작업 입력으로 등록되지 않아 캐싱이 중단됨
축소기(R8)
최종 리소스 ID를 사용하는 경우 R8 최적화 리소스 축소가 자동으로 실패함

Android Gradle 플러그인 9.0.0-alpha13

해결된 문제
Android Gradle 플러그인
AGP9: `variant.sources.kotlin!!.addGeneratedSourceDirectory()` 가 작동하지 않음
컴파일 SDK의 aar 메타데이터 검사에서 이전 DSL 사용
지원 중단된 `com.android.build.api.dsl.ManagedDevices.devices` 속성 삭제

Android Gradle 플러그인 9.0.0-alpha12

해결된 문제
Android Gradle 플러그인
순수 Java 프로젝트는 kotlin stdlib에 종속됩니다.
AGP 9.0에서 지원 중단된 KotlinMultiplatformAndroidCompilationBuilder 속성 삭제
`com.android.tools.build:gradle:9.0.0-alpha05` 에는 KGP 및 gradle-api에 대한 API 종속 항목이 있어야 합니다.
com.android.experimental.built-in-kotlin Gradle 플러그인 이름 변경

Android Gradle 플러그인 9.0.0-alpha11

해결된 문제
Android Gradle 플러그인
내장 Kotlin이 Maven pom에 kotlin-stdlib 종속 항목 제약을 게시하지 않음
compileSdk와 targetSdk 간의 차이에 대한 테스트 사례 추가
resConfigs 값이 비어 있으면 aapt 오류가 모호해짐

Android Gradle 플러그인 9.0.0-alpha10

해결된 문제
Android Gradle 플러그인
extractNativeLibs 및 useEmbeddedDex는 매니페스트에서 가져오면 안 됨
AGP 9.0.0-alpha09의 R8 경고
린트
내장 Kotlin은 META-INF에 .kotlin_module을 추가하지 않음
린트 클래스 경로에 서로 다른 버전의 중복 클래스가 포함되어 있음
비공개 리소스 재정의 해결 방법이 작동하지 않음 (tools:override = 'true')

Android Gradle 플러그인 9.0.0-alpha09

해결된 문제
Android Gradle 플러그인
`legacy-kapt` 플러그인은 `kotlin-kapt`와 달리 주석 처리를 건너뜁니다.
compileSdkSpec.minorApiLevel이 SettingsExtension과 함께 작동하지 않음
[융합 lib - 공개] 생성된 융합 라이브러리에 소스가 포함되지 않음

Android Gradle 플러그인 9.0.0-alpha08

해결된 문제
AGP 9.0.0-alpha08에서 해결됨으로 표시된 공개 문제가 없음

Android Gradle 플러그인 9.0.0-alpha07

해결된 문제
Android Gradle 플러그인
코드 생성 작업이 있으면 빌드가 실패함
`android.builtInKotlin=false`, `android.newDsl=false`, `android.enableLegacyVariantApi=false`를 사용하는 경우 `kotlin-android` 플러그인을 사용하면 'API 'applicationVariants'가 지원 중단됨'이라는 오류와 함께 실패함
kotlin.stdlib.default.dependency=false인 경우 내장 Kotlin이 버전이 지정되지 않은 kotlin-stdlib를 해결하지 못함
DexData가 닫지 않고 파일을 열어 정리 방지
AndroidSourceDirectorySet이 AGP 9.0에서 PatternFilterable 확장을 중지해야 함
테스트 전용 모듈의 테스트 픽스처 오류
테스트 고정 장치에서 컨텍스트 수신기를 사용할 때 오류가 잘못됨
testFixtures의 Kotlin 코드에 대한 잘못된 IDE 오류

Android Gradle 플러그인 9.0.0-alpha06

해결된 문제
Android Gradle 플러그인
새 최적화 DSL은 기본적으로 configuration.txt를 만들지 않음
AGP 8.13.0에서 모듈의 탐색 그래프를 확인하지 못함
AGP에서 지원 중단된 Gradle API 사용: 다중 문자열 표기법
minSdkVersion이 21 이상인 상태에서 레거시 multidex 라이브러리를 사용하려는 사용자에게 경고
린트
Lint ChecksSdkIntAtLeast 검사에서 주석이 달린 값이 올바른지 확인하지 않음

Android Gradle 플러그인 9.0.0-alpha05

해결된 문제
Android Gradle 플러그인
consumerProguardFiles에 android.proguard.failOnMissingFiles가 작동하지 않음
Kotlin Gradle 플러그인 종속 항목을 2.2.10으로 업데이트
KGP API를 사용하여 KotlinJvmAndroidCompilation 만들기
테스트 소스에 적용된 Kotlin 명시적 API 모드
린트
린트에서 'K2 캐시를 정리할 수 없음' 경고가 발생함

Android Gradle 플러그인 9.0.0-alpha04

해결된 문제
Android Gradle 플러그인
AGP 9.0에서 기본 소스/타겟 Java 버전을 Java 8에서 Java 11로 전환
android.useAndroidX 기본값을 true로 전환
내장 Kotlin으로 kapt 플러그인을 적용할 때 예외가 더 나아짐
린트
린트에서 'K2 캐시를 정리할 수 없음' 경고가 발생함

Android Gradle 플러그인 9.0.0-alpha03

해결된 문제
Android Gradle 플러그인
`isIncludeAndroidResources` 가 사용 설정된 경우 `process{Variant}UnitTestManifest` 가 AGP 8.12.0에서 tools:overrideLibrary 사용을 병합하지 못함
AGP로 인해 JVM 테스트 작업의 Gradle에서 지원 중단 경고가 발생함
DependencyReportTask가 구성 캐시와 호환되지 않음
린트
버그: 사용하지 않는 리소스를 삭제해도 해당 리소스의 번역이 삭제되지 않으며 번역에 관한 메시지도 표시되지 않음

Android Gradle 플러그인 9.0.0-alpha02

해결된 문제
Android Gradle 플러그인
proguard 파일이 없으면 빌드 실패
buildconfig 기본값 gradle.properties 플래그 삭제
앱의 targetSdk 기본값을 minSdk 대신 compileSdk에 기반하도록 변경

Android Gradle 플러그인 9.0.0-alpha01

해결된 문제
Android Gradle 플러그인
AGP 9.0에서 지원 중단된 AndroidSourceSet.jni 삭제
AGP 9.0에서 Installation.installOptions() 삭제
AGP 9.0에서 BuildType.isRenderscriptDebuggable 삭제
android.defaults.buildfeatures.renderscript 삭제
Gradle 관리 기기에서 `com.android.kotlin.multiplatform.library`가 비정상 종료됨
`android.defaults.buildfeatures.aidl` 기본 gradle.properties 플래그 삭제