Android Gradle 플러그인 8.1.0 (2023년 7월)

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

호환성

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

Kotlin DSL이 빌드 구성의 기본값입니다.

이제 새 프로젝트는 빌드 구성에 기본적으로 Kotlin DSL (build.gradle.kts)을 사용합니다. 이는 Groovy DSL(build.gradle)보다 문법 강조 표시, 코드 완성, 선언 탐색 기능 등을 갖춘 더 나은 편집 환경을 제공합니다. 빌드 구성에 AGP 8.1과 Kotlin DSL을 사용하는 경우 최상의 환경을 위해 Gradle 8.1을 사용해야 합니다. 자세한 내용은 Kotlin DSL 이전 가이드를 참고하세요.

자동 앱별 언어 지원

Android 스튜디오 Giraffe Canary 7 및 AGP 8.1.0-alpha07부터 앱별 언어 설정을 자동으로 지원하도록 앱을 구성할 수 있습니다. Android Gradle 플러그인은 프로젝트 리소스를 기반으로 LocaleConfig 파일을 생성하고 최종 매니페스트 파일에 이에 대한 참조를 추가하므로 개발자가 더 이상 이 작업을 수동으로 하지 않아도 됩니다. AGP는 앱 모듈의 res 폴더에 있는 리소스 및 모든 라이브러리 모듈 종속 항목을 사용하여 LocaleConfig 파일에 포함할 언어를 결정합니다.

자동 앱별 언어 기능은 Android 13(API 수준 33) 및 이후 버전을 실행하는 앱을 지원합니다. 이 기능을 사용하려면 compileSdkVersion을 33 이상으로 설정해야 합니다. 이전 버전의 Android에서 앱별 언어 설정을 구성하려면 API와 인앱 언어 선택 도구를 사용해야 합니다.

자동 앱별 언어 지원을 사용 설정하려면 기본 언어를 지정합니다.

  1. 앱 모듈의 res 폴더에서 resources.properties라는 새 파일을 만듭니다.
  2. resources.properties 파일에서 unqualifiedResLocale 라벨을 사용하여 기본 언어를 설정합니다. 언어 이름을 만들려면 언어 코드에 스크립트(선택사항)와 지역 코드(선택사항)를 대시로 구분하여 결합합니다.

    • 언어: 두 글자 또는 세 글자로 된 ISO 639-1 코드를 사용합니다.
    • 스크립트 (선택사항): ISO 15924 코드를 사용합니다.
    • 지역 (선택사항): 두 글자로 된 ISO 3166-1-alpha-2 코드나 3자리로 된 UN_M.49 코드를 사용합니다.

    예를 들어 기본 언어가 미국 영어인 경우:

        unqualifiedResLocale=en-US
        

AGP는 res 폴더의 values-* 디렉터리를 사용하여 이 기본 언어와 개발자가 지정한 모든 대체 언어를 자동 생성된 LocaleConfig 파일에 추가합니다.

앱별 언어 자동 지원은 기본적으로 사용 중지되어 있습니다. 이 기능을 사용 설정하려면 모듈 수준 build.gradle.kts 파일 (Groovy를 사용하는 경우 build.gradle 파일)의 androidResources {} 블록에 있는 generateLocaleConfig 설정을 사용합니다.

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

Groovy

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android 린트에 JVM 17을 타겟팅하는 바이트 코드가 포함되어 있음

AGP 8.1.0-alpha04부터 Android 린트에 JVM 17을 타겟팅하는 바이트 코드가 포함됩니다. 맞춤 린트 검사를 작성하는 경우 JDK 17 이상으로 컴파일하고 Kotlin 컴파일러 옵션에 jvmTarget = '17'를 지정해야 합니다.

린트 도구에 관한 자세한 내용은 린트 검사로 코드 개선을 참고하세요.

네이티브 라이브러리 압축 설정이 DSL로 이동됨

AGP 8.1.0-alpha10부터 매니페스트 대신 DSL을 사용하여 네이티브 라이브러리 압축을 구성하지 않으면 경고가 표시됩니다. 다음 가이드에서는 DSL을 사용하도록 구성을 업데이트하는 방법을 설명합니다. 업데이트하는 데 도움이 필요하면 AGP 업그레이드 어시스턴트(Tools > AGP Upgrade Assistant)를 사용하세요.

압축되지 않은 네이티브 라이브러리를 사용하려면 매니페스트에서 android::extractNativeLibs 속성을 삭제하고 다음 코드를 모듈 수준 build.gradle.kts 파일 (Groovy를 사용하는 경우 build.gradle 파일)에 추가합니다.

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

Groovy

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

실험용 빌드 플래그

이는 AGP 8.1에서 사용할 수 있는 빌드를 구성하기 위한 실험용 플래그입니다.

플래그 추가됨 기본값 Notes
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false 서명 구성을 지정하지 않고 이를 사용 설정하면 프로파일링 가능 또는 디버그 가능한 빌드를 실행할 때 AGP가 기본 디버그 서명 구성을 사용합니다. 빌드 작성자가 특정 프로파일링 서명 구성을 선언하도록 장려하기 위해 이 플래그는 기본적으로 사용 중지되어 있습니다.
android.experimental.library.desugarAndroidTest AGP 8.0 false 이 플래그를 사용하면 라이브러리 빌더가 린트 작업 등을 통해 생성된 AAR에 영향을 미치지 않고 테스트 APK의 핵심 라이브러리 디슈가링을 사용 설정할 수 있습니다. 향후 Variant API에서 이 동작을 지원할 계획입니다.
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false Gradle 관리 기기를 사용 설정하면 플러그인에서 제공할 수 있는 사용자 정의 맞춤 기기 유형을 사용할 수 있습니다. Firebase Test Lab 플러그인을 사용하려면 이 플래그를 사용 설정해야 합니다.
android.lint.printStackTrace AGP 8.0 false 사용 설정되면 Android 린트가 다운되면 스택 트레이스를 출력합니다. 이 플래그는 LINT_PRINT_STACKTRACE 환경 변수와 기능이 동일합니다.
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 없음 어느 시점에서든 동시 실행 Gradle 관리 기기(AVD)의 최대 개수를 지정합니다. 값이 0 또는 음수이면 최대 기기 수가 없습니다.
android.experimental.testOptions.installApkTimeout AGP 8.0 없음 APK 설치를 위한 제한 시간(초)입니다. 값이 0 또는 음수이면 UTP에 의해 기본값으로 설정됩니다.