Android Gradle 플러그인 8.0.0 (2023년 4월)

Android Gradle 플러그인 8.0.0은 Android Gradle 플러그인의 다양한 확인할 수 있습니다.

호환성

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

패치 출시

다음은 Android Gradle 플러그인 패치 출시 목록입니다. 8.0.

Android Gradle 플러그인 8.0.2 (2023년 5월)

AGP 8.0.2에서 수정된 버그 목록은 Android 스튜디오 2022.2.1 해결된 문제.

Android Gradle 플러그인 8.0.1 (2023년 5월)

이번 소규모 업데이트는 다음과 같은 버그 수정을 포함합니다.

해결된 문제
오류: AGP 7.2.2에서 7.4.0으로 업그레이드한 후 'No VersionRequirement with the given id in the table' 오류 발생
markTypeAsLive AGP 7.4.1에서 R8 NullPointerException 발생
[R8 4.0.53] Android 11에서 하드 클래스 인증 실패

브레이킹 체인지: 모듈 수준 빌드 스크립트에 네임스페이스 필요

네임스페이스는 반드시 모듈 수준 build.gradle.kts 파일에서 설정해야 합니다. 훨씬 더 강력합니다. namespace DSL 속성을 사용할 수 있습니다. 살펴보겠습니다 자세한 내용은 네임스페이스를 설정합니다.

네임스페이스 DSL로 이전할 때는 다음 문제에 유의하세요.

  • 이전 버전의 AGP는 기본 네임스페이스에서 테스트 네임스페이스를 추론합니다. 애플리케이션 ID가 잘못되는 경우도 있을 수 있습니다 AGP 업그레이드 어시스턴트는 프로젝트의 기본 네임스페이스와 테스트 네임스페이스가 사용할 수 있습니다. 업그레이드가 차단된 경우 testNamespace를 수동으로 변경해야 합니다. 소스 코드를 적절하게 수정하세요.
  • 테스트 네임스페이스를 변경한 후 코드가 계측 테스트는 런타임에 실패합니다. 이러한 문제는 계측 테스트 소스 코드는 androidTest 및 앱 소스.

자세한 내용은 문제 #191813691 댓글 #19.

브레이킹 체인지: 빌드 옵션 기본값

AGP 8.0부터 이러한 플래그의 기본값이 빌드 성능을 개선할 수 있습니다 코드 조정에 대한 도움을 받아 구현하려는 경우 AGP 업그레이드 어시스턴트를 (Tools > AGP Upgrade Assistant). 업그레이드 어시스턴트가 새 동작을 수용하도록 코드를 업데이트하거나 플래그를 설정하여 확인할 수 있습니다

플래그 새 기본값 이전 기본값 참고
android.defaults.buildfeatures.buildconfig false true AGP 8.0은 기본적으로 BuildConfig를 생성하지 않습니다. 요구사항 필요한 프로젝트에서 DSL을 사용하여 이 옵션을 지정하세요.
android.defaults.buildfeatures.aidl false true AGP 8.0은 기본적으로 AIDL 지원을 사용 설정하지 않습니다. 서비스 계정을 필요한 프로젝트에서 DSL을 사용하여 이 옵션을 사용할 수도 있습니다. 이 플래그는 곧 AGP 9.0에서 삭제될 예정입니다.
android.defaults.buildfeatures.renderscript false true AGP 8.0에서는 기본적으로 RenderScript 지원이 사용 설정되지 않습니다. 해야 할 일 필요한 프로젝트에서 DSL을 사용하여 이 옵션을 지정하세요. 이 플래그는 AGP 9.0에서 삭제될 예정입니다.
android.nonFinalResIds true false AGP 8.0은 다음과 같은 방법으로 최종이 아닌 필드가 있는 R 클래스를 생성합니다. 기본값입니다.
android.nonTransitiveRClass true false AGP 8.0은 다음에 정의된 리소스의 R 클래스를 생성함 현재 모듈에서만 사용할 수 있습니다
android.enableR8.fullMode true false AGP 8.0은 기본적으로 R8 전체 모드를 사용 설정합니다. 자세한 내용은 R8 전체 모드.

브레이킹 체인지: 빌드 옵션 값이 적용됨

AGP 8.0부터 더 이상 이러한 플래그 값을 변경할 수 없습니다. 만약 gradle.properties 파일에서 지정하면 값이 무시되고 AGP가 경고를 출력합니다.

플래그 적용된 값 참고
android.dependencyResolutionAtConfigurationTime.warn true AGP 8.0이 구성 해상도를 감지하면 경고를 표시함 Gradle 구성에 부정적인 영향을 미치므로 표시됩니다.
android.r8.failOnMissingClasses true 누락된 클래스가 있는 경우 AGP 8.0이 R8을 사용하는 빌드에 실패함 DEX 최적화를 개선합니다 이 문제를 해결하려면 유지 규칙 -dontwarn개가 누락되었을 수 있습니다. 자세한 내용은 보기 R8 축소기에서 클래스 경고가 누락됨.
android.testConfig.useRelativePath true Android 리소스, 애셋, 매니페스트 사용을 지원하는 경우 단위 테스트가 사용 설정되면 AGP 8.0은 상대적만 포함된 test_config.properties 파일 학습합니다. 이렇게 하면 Android 단위 테스트에서 항상 Gradle을 사용할 수 있습니다. 빌드 캐시
android.useNewJarCreator true AGP가 JAR 파일을 만들 때 Zipflinger 라이브러리를 사용하여 개선 빌드 성능을 향상시키는 데 도움이 됩니다.
android.bundletool.includeRepositoriesInDependencyReport true AAB 및 APK에 SDK 종속 항목 정보를 추가할 때 AGP 8.0은 이 정보에 프로젝트 저장소 목록도 추가합니다. 받는사람 자세히 알아보려면 Play Console의 종속 항목 정보.
android.enableArtProfiles true 이제 기준 프로필이 항상 생성됩니다. 자세한 내용은 기준 프로필을 참고하세요.
android.enableNewResourceShrinker true 기본적으로 새로운 리소스 축소기 구현을 사용합니다. 새로운 리소스 축소기는 동적 기능을 지원합니다.
android.enableSourceSetPathsMap true 상대적 리소스 경로 매핑을 계산하는 데 사용되므로 Gradle은 더 자주 업데이트됩니다
android.cacheCompileLibResources true 컴파일된 라이브러리 리소스는 이제 기본적으로 캐시될 수 있습니다. Gradle이 프로젝트 위치를 기준으로 리소스 파일을 추적합니다. 요구사항 android.enableSourceSetPathsMap이(가) 사용 설정되어야 합니다.
android.disableAutomaticComponentCreation true AGP 8.0은 기본적으로 SoftwareComponent를 생성하지 않습니다. 대신 AGP는 게시되도록 구성된 변형에만 적용되는 SoftwareComponents 할 수 있습니다.

실행 프로필의 새로운 안정화 플래그

AGP에는 새 플래그 android.settings.executionProfile가 포함되어 있습니다. 이 플래그를 사용하여 다음 작업 수행 기본 실행 프로필을 재정의하면 SettingsExtension 자세한 내용은 설정 플러그인 문서를 참고하세요.

실험용 플래그를 미리 보려면 다음을 참고하세요. 미리보기 출시 노트를 참조하세요.

Kotlin 지연 속성 할당이 지원되지 않음

빌드 스크립트에 Gradle의 Kotlin DSL을 사용하는 경우, Android는 Studio 및 AGP 8.0은 = 연산자. 이 기능에 대한 자세한 내용은 출시 노트문서를 참조하세요.

빌드 분석 도구 작업 카테고리

Android 스튜디오 Flamingo부터 빌드 분석 도구에 빌드 기간에 영향을 미치는 태스크입니다. 프로젝트에서 AGP 8.0 이상을 사용하는 경우 빌드 분석 도구는 작업을 개별적으로 표시하는 대신 카테고리입니다. 예: Android 리소스, Kotlin 또는 Dexing과 관련된 작업 함께 그룹화된 후 빌드 기간을 기준으로 정렬됩니다 이렇게 하면 어떤 카테고리가 빌드 시간에 가장 큰 영향을 미치는지 알 수 있습니다. 각 카테고리 확장 해당하는 태스크 목록을 표시합니다. 할 일을 개별적으로 표시하려면 그룹화 기준 드롭다운을 사용합니다.

빌드 분석 도구 작업 카테고리

새 설정 플러그인

AGP 8.0.0-alpha09에 새로운 설정 플러그인이 도입되었습니다. 설정 플러그인을 사용하면 전역 구성(모든 모듈에 적용되는 구성)을 중앙 집중화하여 구성을 복사하여 붙여넣을 필요가 없습니다. 모듈을 마칩니다 또한 설정 플러그인을 사용하여 실행 프로필이나 도구 실행 방법에 관한 다른 지침 전환할 수 있습니다

설정 플러그인을 사용하려면 settings.gradle 파일에 플러그인을 적용합니다.

apply plugin 'com.android.settings'

전역 구성 중앙 집중화

전역 구성을 구성하려면 다음에서 새 android 블록을 사용합니다. settings.gradle 파일. 예를 들면 다음과 같습니다.

android {
  compileSdk 31
  minSdk 28
  ...
}

도구 실행 프로필

설정 플러그인을 사용하면 일부 도구의 실행 프로필을 생성할 수도 있습니다. 실행 프로필에 따라 도구 실행 방식이 결정됩니다. 다양한 실행 프로필을 만들 수 있습니다 실행 프로필에서는 도구에 대한 JVM 인수를 설정하고 별도의 프로세스에서 실행되도록 구성할 수 있습니다. 현재는 R8 도구가 지원됩니다.

실행 프로필을 만들고 settings.gradle 파일을 엽니다.

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

기본 프로필을 재정의하려면 android.experimental.settings.executionProfile 속성 gradle.properties 파일:

android.experimental.settings.executionProfile=high

명령줄을 사용하여 이 속성을 설정할 수도 있습니다. 이렇게 하면 다르지 않습니다 예를 들어 지속적 통합 워크플로가 있는 경우 명령줄을 사용하여 실행 프로필을 변경할 수 있으며 settings.gradle 파일을 변경합니다.

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

AGP 8.0을 실행하려면 JDK 17이 필요함

이제 Android Gradle 플러그인 8.0을 사용하여 앱을 빌드할 때 JDK 17이 필요합니다. 을 사용하여 Gradle을 실행합니다. Android 스튜디오 Flamingo가 JDK 17을 번들로 제공하고 Gradle을 다음과 같이 구성합니다. 사용하는 것이 일반적입니다. 즉, 대부분의 Android 스튜디오 사용자는 프로젝트에 대한 구성 변경을 수행할 수 있습니다

수동으로 JDK 버전을 설정해야 하는 경우 JDK 17 이상을 사용해야 합니다.

Android 스튜디오와는 별개로 AGP를 사용하는 경우 JAVA_HOME 설정 중 환경 변수 또는 -Dorg.gradle.java.home 명령줄 옵션 JDK 17의 설치 디렉터리에 추가합니다.