Android Gradle 플러그인 8.0.0은 다양한 새 기능과 개선사항이 포함된 주요 버전입니다.
호환성
최소 버전 | 기본 버전 | 참고 | |
---|---|---|---|
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
파일에서 설정해야 합니다. AGP 7.3부터 namespace
DSL 속성을 사용할 수 있습니다. 자세한 내용은 네임스페이스 설정을 참고하세요.
네임스페이스 DSL로 이전할 때는 다음 문제에 유의하세요.
- 이전 버전의 AGP는 경우에 따라 기본 네임스페이스 또는 애플리케이션 ID에서 테스트 네임스페이스를 잘못 추론합니다. AGP 업그레이드 어시스턴트는 프로젝트의 기본 네임스페이스와 테스트 네임스페이스가 동일한 경우 업그레이드를 차단합니다. 업그레이드가 차단된 경우
testNamespace
를 수동으로 변경하고 소스 코드를 적절하게 수정해야 합니다. - 테스트 네임스페이스를 변경한 후 코드는 컴파일되지만 계측 테스트가 런타임에 실패할 수 있습니다. 계측 테스트 소스 코드가
androidTest
및 앱 소스 모두에 정의된 리소스를 참조하는 경우 이러한 오류가 발생할 수 있습니다.
자세한 내용은 문제 #191813691 댓글 #19를 참고하세요.
중대한 변경사항: 빌드 옵션 기본값
AGP 8.0부터 빌드 성능을 개선하기 위해 이러한 플래그의 기본값이 변경되었습니다. 이러한 변경사항 중 일부를 지원하도록 코드를 조정하는 데 도움이 필요하면 AGP 업그레이드 어시스턴트(도구 > AGP 업그레이드 어시스턴트)를 사용하세요. 업그레이드 어시스턴트는 새 동작을 수용하도록 코드를 업데이트하거나 이전 동작을 유지하도록 플래그를 설정하는 방법을 안내합니다.
플래그 | 새 기본값 | 이전 기본값 | 참고 |
---|---|---|---|
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은 더 나은 DEX 최적화를 위해 누락된 클래스가 있는 경우 R8을 사용하는 빌드를 실패시킵니다. 이 문제를 해결하려면 누락된 라이브러리 또는 -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는 게시 DSL을 사용하여 게시되도록 구성된 변형에 대해서만 SoftwareComponents를 만듭니다. |
실행 프로필의 새로운 안정적인 플래그
AGP에는 새 플래그 android.settings.executionProfile
가 포함됩니다. 이 플래그를 사용하여 SettingsExtension
의 기본 실행 프로필을 재정의합니다.
자세한 내용은 설정 플러그인 문서를 참고하세요.
실험 플래그를 미리 보려면 미리보기 출시 노트를 참고하세요.
Kotlin 지연 속성 할당이 지원되지 않음
빌드 스크립트에 Gradle의 Kotlin DSL을 사용하는 경우 Android 스튜디오 및 AGP 8.0은 =
연산자를 사용하는 실험용 속성 할당을 지원하지 않습니다. 이 기능에 관한 자세한 내용은 출시 노트 및 문서를 참고하세요.
빌드 분석 도구 작업 카테고리
Android 스튜디오 Flamingo부터 Build Analyzer에 빌드 시간에 영향을 미치는 작업을 위한 새로운 기본 보기가 있습니다. 프로젝트에서 AGP 8.0 이상을 사용하는 경우 빌드 분석 도구는 작업을 개별적으로 표시하는 대신 카테고리별로 그룹화합니다. 예를 들어 Android 리소스, Kotlin 또는 Dexing과 관련된 태스크가 그룹화된 후 빌드 시간별로 정렬됩니다. 이를 통해 빌드 시간에 가장 큰 영향을 미치는 카테고리를 쉽게 알 수 있습니다. 각 카테고리를 펼치면 해당하는 작업 목록이 표시됩니다. 그룹화하지 않고 태스크를 개별적으로 표시하려면 그룹 기준 드롭다운을 사용하세요.
새 설정 플러그인
AGP 8.0.0-alpha09에서는 새로운 설정 플러그인이 도입되었습니다. 설정 플러그인을 사용하면 모든 모듈에 적용되는 글로벌 구성을 한곳으로 중앙 집중화할 수 있으므로 여러 모듈에서 구성을 복사하여 붙여넣을 필요가 없습니다. 또한 설정 플러그인을 사용하여 도구 실행 프로필 또는 도구를 실행하는 방법에 관한 다양한 안내를 만들고 그 사이를 전환할 수 있습니다.
설정 플러그인을 사용하려면 settings.gradle
파일에 플러그인을 적용합니다.
apply plugin 'com.android.settings'
전역 구성 중앙화
전역 구성을 구성하려면 settings.gradle
파일에서 새 android
블록을 사용하세요. 예를 들면 다음과 같습니다.
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"
}
}
기본 프로필을 재정의하려면 gradle.properties
파일에서 android.experimental.settings.executionProfile
속성을 사용하여 다른 프로필을 선택합니다.
android.experimental.settings.executionProfile=high
명령줄을 사용하여 이 속성을 설정할 수도 있습니다. 그러면 다양한 워크플로를 설정할 수 있습니다. 예를 들어 지속적인 통합 워크플로가 있는 경우 명령줄을 사용하여 settings.gradle
파일을 변경하지 않고도 실행 프로필을 변경할 수 있습니다.
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
AGP 8.0을 실행하려면 JDK 17이 필요함
Android Gradle 플러그인 8.0을 사용하여 앱을 빌드하는 경우 이제 Gradle을 실행하려면 JDK 17이 필요합니다. Android 스튜디오 Flamingo는 JDK 17을 번들로 제공하고 Gradle을 기본적으로 사용하도록 구성합니다. 즉, 대부분의 Android 스튜디오 사용자는 프로젝트 구성을 변경할 필요가 없습니다.
Android 스튜디오 내 AGP에 사용되는 JDK 버전을 수동으로 설정해야 하는 경우 JDK 17 이상을 사용해야 합니다.
Android 스튜디오와는 별개로 AGP를 사용하는 경우 JAVA_HOME
환경 변수 또는 -Dorg.gradle.java.home
명령줄 옵션을 JDK 17의 설치 디렉터리로 설정하여 JDK 버전을 업그레이드합니다.
해결된 문제
Android Gradle 플러그인 8.0.0
해결된 문제 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle 플러그인 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer(D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
린트 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
린트 통합 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
축소기(R8) |
|
Android Gradle 플러그인 8.0.1
해결된 문제 | ||||
---|---|---|---|---|
축소기(R8) |
|
Android Gradle 플러그인 8.0.2
해결된 문제 | |||||
---|---|---|---|---|---|
축소기(R8) |
|