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 스튜디오 빌드가 이미 있는 경우 공개 버전 채널을 클릭하여 업데이트를 다운로드할 수 있습니다. 그렇지 않은 경우 최신 안정화 빌드를 다운로드합니다.

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

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

토큰의 액세스 권한을 취소한 후 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에 포함됩니다. 즉, 코드 축소기가 실행되지 않습니다.

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

해결된 문제

Android Gradle 플러그인 8.4.2

해결된 문제
Android Gradle 플러그인
AGP 8.4가 CI에서 GMD 다운로드를 중단하는 것으로 보임

Android Gradle 플러그인 8.4.1

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

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: Index 0 out of bounds for length 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 종속 항목을 명확히 구분할 수 없음