Android Gradle 플러그인 8.4.0 (2024년 4월)

Android Gradle 플러그인 8.4.0은 다양한 새 기능과 개선사항이 포함된 메이저 버전입니다.

호환성

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

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

다음은 Android Gradle 플러그인 8.4의 새로운 기능입니다.

패치 출시

다음은 Android 스튜디오 Jellyfish 및 Android Gradle 플러그인 8.4의 패치 출시 목록입니다.

Android 스튜디오 Jellyfish | 2023.3.1 패치 2 및 AGP 8.4.2 (2024년 6월)

중요 보안 업데이트: Android 스튜디오 Iguana | 2023.2.1 이상에서 제공되는 GitHub 플러그인보안 취약점으로 인해 승인되지 않은 사용자에게 액세스 토큰이 노출될 수 있습니다.

수정사항: Jetbrains에서 IntelliJ 플랫폼 제품의 문제를 해결했으며, 이제 Android 스튜디오 Jellyfish | 2023.3.1 패치 2 (2023.3.1.20)에서 수정사항을 확인할 수 있습니다.

안정화 버전 채널에 이미 Android 스튜디오 빌드가 있는 경우 Help > Check for Updates (macOS의 경우 Android Studio > Check for Updates)를 클릭하여 업데이트를 받을 수 있습니다. 그렇지 않으면 최신 안정화 버전 빌드를 다운로드합니다.

또한 IDE에서 GitHub pull 요청 기능을 적극적으로 사용한 경우 플러그인에서 사용 중인 GitHub 토큰을 취소하는 것이 좋습니다. 플러그인이 OAuth 통합 또는 개인 액세스 토큰 (PAT)을 사용할 수 있으므로 둘 다 확인하고 필요에 따라 취소하세요.

  • OAuth 통합에 대한 액세스 권한을 취소하려면 애플리케이션 > 승인된 OAuth 앱으로 이동하여 JetBrains IDE 통합 토큰의 액세스 권한을 취소합니다.
  • PAT의 액세스 권한을 취소하려면 개인 액세스 토큰으로 이동하여 GitHub 플러그인에 발급된 토큰을 삭제합니다. 기본 토큰 이름은 IntelliJ IDEA GitHub 통합 플러그인이지만 맞춤 이름을 사용하고 있을 수도 있습니다.

토큰의 액세스 권한을 취소한 후에는 Git 작업을 비롯한 모든 플러그인 기능이 다시 작동하도록 플러그인을 다시 설정해야 합니다.

불편을 끼쳐 드려 죄송합니다. 모든 사용자는 코드와 데이터를 보호하기 위해 즉시 업데이트하시기 바랍니다.

이번 소규모 업데이트는 이러한 버그 수정을 포함합니다.

Android 스튜디오 Jellyfish | 2023.3.1 패치 1 및 AGP 8.4.1 (2024년 5월)

이번 소규모 업데이트는 이러한 버그 수정을 포함합니다.

라이브러리 클래스가 축소됨

Android Gradle 플러그인 8.4부터 Android 라이브러리 프로젝트가 축소되면 프로젝트 간 게시를 위해 축소된 프로그램 클래스가 게시됩니다. 즉, 앱이 축소된 버전의 Android 라이브러리 하위 프로젝트에 종속된 경우 APK에는 축소된 Android 라이브러리 클래스가 포함됩니다. APK에 누락된 클래스가 있는 경우 라이브러리 보관 규칙을 조정해야 할 수 있습니다.

AAR을 빌드하고 게시하는 경우 라이브러리가 종속되는 로컬 JAR이 축소되지 않은 상태로 AAR에 포함됩니다. 즉, 코드 축소기가 로컬 JAR에서 실행되지 않습니다.

이전 동작으로 되돌리려면 gradle.properties 파일에서 android.disableMinifyLocalDependenciesForLibraries를 설정하고 버그를 신고하세요. AGP의 향후 버전에서는 이 플래그가 삭제될 예정입니다.

해결된 문제

Android Gradle 플러그인 8.4.0

해결된 문제
Android Gradle 플러그인
JavaCompile에 `--release` 옵션을 사용할 수 없는 이유를 나타내는 오류 메시지를 개선함
@DoNotCacheByDefault를 사용하여 MergeSourceSetFolders의 캐싱을 사용 중지함
AGP 8.2.0에서 JaCoCo 버전을 설정할 수 없음
DynamicFeatureBuildType에 isDebuggable이 누락됨
축소된 라이브러리 클래스가 프로젝트 간 사용을 위해 올바르게 게시되지 않음
생성된 파일을 제외하는 Variant#sources API 제공
AGP 모델에 Java 플랫폼 프로젝트 종속 항목이 포함되지 않음
ExtractAarTransform이 classes.jar가 없는 aar에 대해 재현 불가능한 classes.jar를 만듦
ComposeOptions에서 sourceInformation을 구성하도록 허용
android.bundle.DeviceSpec 메시지에서 field: sdk_runtime을 찾을 수 없음
compileOnlyApi 지원
리소스 처리가 사용 중지되면 라이브러리 모듈에서 R8이 실패함
변환 중에 아티팩트 이름을 변경하는 기능 추가
작업 출력을 sourceSets.androidMain.resources의 srcDir로 추가해도 작업 종속 항목이 생성되지 않음
AndroidPluginVersion.toString()에서 선행 0이 누락됨
Artifacts.add(FileSystemLocation)가 더 제한적이어야 함
AGP 8.3.0-alpha11이 시작 시 android.content.res.Resources$NotFoundException과 함께 비정상 종료되는 출시 APK를 생성함
동적 기능을 사용하는 프로젝트에서 Android Gradle 플러그인 8.2.0 설치 작업이 실패함
AIDL 컴파일이 IndexOutOfBoundsException과 함께 실패함: 길이가 0인 경우 색인 0이 범위를 벗어남
MergeJavaResourcesTask 증분 입력 처리 문제
AGP 8.3.0-alpha02가 알려진 보안 취약점이 있는 라이브러리에 종속됨
선택한 활동 템플릿에 androidx.* 종속 항목이 있는 프로젝트가 필요함
AGP 업그레이드 어시스턴트가 모듈에서 consumerProguardFiles를 잘못 삭제함
AGP 업그레이드 어시스턴트가 무한대로 로드됨
SourceDirectories#static이 GenerateBuildConfig 작업에 종속되어서는 안 됨
Compose 미리보기가 전이 종속 항목에서 클래스를 확인할 수 없음
AGP 8.3이 zipApksFor 작업을 중단함
Android APK에 패키징된 AndroidX 데스크톱 아티팩트
린트
린트 테스트 프레임워크의 GradleModelMocker가 라이브러리 버전 설정을 허용하지 않음
린트 K2 UAST: UCallableReferenceExpression이 잘못된 qualifierType을 보고함
오버로드된 함수와 함께 useK2Uast=true를 사용한 린트 거짓양성
[빌드 도구/린트] ChecksSdkIntAtLeast 생성자 속성
린트 통합
린트가 KMP 종속 항목을 구분할 수 없음

Android Gradle 플러그인 8.4.1

해결된 문제
Android Gradle 플러그인
JDK 21에서 Java 8 타겟팅 지원을 지원 중단하는 것에 관한 경고를 숨길 수 있도록 허용
Dexer(D8)
java.lang.VerifyError: 인증 도구에서 클래스를 거부함
난독화 후 새 버전 R8 형식 변환 오류
중간 빌드에 스텁의 전체 글로벌 합성 콘텐츠가 없을 수 있음

Android Gradle 플러그인 8.4.2

해결된 문제
Android Gradle 플러그인
AGP 8.4로 인해 CI에서 GMD 다운로드가 중단되는 것 같습니다.