Android Gradle 플러그인 4.2.0(2021년 3월)

호환성

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

새로운 기능

이 버전의 Android Gradle 플러그인에는 다음과 같은 새로운 기능이 포함됩니다.

기본 자바 언어 버전 8

버전 4.2부터 AGP는 기본적으로 자바 8 언어 수준을 사용합니다. Java 8을 통해 람다를 비롯한 여러 최신 언어 기능에 액세스할 수 있습니다. 식, 메서드 참조, 정적 인터페이스 메서드 등 다양한 메서드를 지원합니다. 전체 목록은 지원되는 기능의 자세한 내용은 자바 8 문서를 참조하세요.

이전 동작을 유지하려면 모듈 수준 build.gradle.kts 또는 build.gradle 파일에 Java 7을 명시적으로 지정합니다.

// build.gradle
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}
// build.gradle.kts
android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

새 JVM 리소스 컴파일러

Android Gradle 플러그인 4.2 도구의 새로운 JVM 리소스 컴파일러가 일부를 대체함 AAPT2 리소스 컴파일러를 사용하며, 특히 Windows 시스템에서 빌드 성능을 향상하는 데 도움이 됩니다. 새 JVM 리소스 컴파일러가 기본적으로 사용 설정됩니다.

이제 v3 및 v4 서명이 지원됨

이제 Android Gradle 플러그인 4.2는 APK v3APK v4 서명 형식을 지원합니다. 캠페인에서 이러한 형식 중 하나 또는 둘 다를 사용하려면 빌드하려면 모듈 수준 build.gradle에 다음 속성을 추가합니다. 또는 build.gradle.kts 파일:

// build.gradle
android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}
// build.gradle.kts
android {
  ...
  signingConfigs {
      config {
          ...
          enableV3Signing = true
          enableV4Signing = true
      }
  }
}

APK v4 서명을 사용하면 ADB를 사용하여 대규모 APK를 빠르게 배포할 수 있습니다. 증분 APK 설치 Android 11 이 새 플래그는 배포 시 APK 서명 단계를 처리합니다. 프로세스입니다

변형당 앱 서명 구성

이제 Android Gradle에서 앱 서명을 사용 설정 또는 사용 중지할 수 있습니다. 사용할 수 있습니다.

이 예에서는 onVariants() 드림 메서드를 사용할 수 있습니다.

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

새로운 Gradle 속성: android.native.buildOutput

빌드 출력에서 복잡함을 줄이기 위해 AGP 4.2는 CMakendk-build를 사용하는 네이티브 빌드의 메시지를 필터링하여 기본값으로 C/C++ 컴파일러 출력만 표시합니다. 이전에는 빌드된 모든 파일의 출력 줄이 생성되었으며, 이로 인해 정보 메시지의 양이 많았습니다.

네이티브 출력 전체를 보려면 새로운 Gradle 속성 android.native.buildOutputverbose로 설정하세요.

gradle.properties 파일 또는 명령줄을 통해 이 속성을 설정할 수 있습니다.

gradle.properties
android.native.buildOutput=verbose

명령줄
-Pandroid.native.buildOutput=verbose

이 속성의 기본값은 quiet입니다.

gradle.properties 파일의 동작 변경

AGP 4.2부터 더 이상 Gradle 속성을 재정의할 수 없습니다. 하위 프로젝트에서 가져온 것입니다. 즉, 루트 프로젝트 대신 하위 프로젝트의 gradle.properties 파일에서 속성을 선언하면 이 속성이 무시됩니다.

예를 들어 이전 출시에서는 AGP가 <var>projectDir</var>/gradle.properties님, <var>projectDir</var>/app/gradle.properties, <var>projectDir</var>/library/gradle.properties님, 등). 앱 모듈의 경우 <var>projectDir</var>/gradle.properties<var>projectDir</var>/app/gradle.properties, 의 값 <var>projectDir</var>/app/gradle.properties 우선 적용됩니다

AGP 4.2에서는 이 동작이 변경되었으며 AGP는 하위 프로젝트의 gradle.properties (예: <var>projectDir</var>/app/gradle.properties). 이 변경사항은 새로운 Gradle 동작을 반영하고 구성 캐싱을 지원합니다.

gradle.properties의 값 설정에 대한 자세한 내용은 자세한 내용은 Gradle 문서.

Gradle 호환성 및 구성 변경사항

Android 스튜디오에서 실행될 때 Gradle 빌드 도구는 스튜디오의 번들 JDK를 사용합니다. 이전 출시에서는 JDK 8이 스튜디오와 함께 번들로 제공되었습니다. 그러나 4.2에서는 이제 JDK 11이 대신 번들로 제공됩니다. 새 번들 JDK를 사용하여 Gradle을 실행하면 비호환성이 발생하거나 가비지 컬렉터의 변경사항으로 인해 JVM 성능에 영향을 미칠 수 있습니다. 이러한 문제는 아래에 설명되어 있습니다.

참고: JDK 11과 함께 Gradle을 실행하는 것을 권장하지만 Gradle을 실행하는 데 사용되는 JDK를 프로젝트 구조 대화상자 이 설정을 변경하면 Gradle을 실행하는 데 사용되는 JDK만 변경되며 스튜디오 자체를 실행하는 데 사용되는 JDK는 변경되지 않습니다.

Android와의 스튜디오 호환성 Gradle 플러그인 (AGP)

Android 스튜디오 4.2는 AGP가 Gradle 4.8.1 이상을 실행한다면 AGP 3.1 이상을 사용하는 프로젝트를 열 수 있습니다. Gradle 호환성에 관한 자세한 내용은 Gradle 업데이트를 참고하세요.

JDK 11의 Gradle 빌드 최적화

이번 JDK 11로의 업데이트는 JVM 가비지 컬렉터의 기본 구성에 영향을 미칩니다. JDK 8이 병렬 가비지 컬렉터를 사용하는 반면 JDK 11은 G1 가비지 컬렉터를 사용하기 때문입니다.

빌드 성능을 개선하려면 Gradle 빌드 테스트를 병렬 가비지 컬렉터입니다. gradle.properties에서 다음을 설정합니다.

org.gradle.jvmargs=-XX:+UseParallelGC

다른 옵션이 이미 이 필드에 설정되어 있으면 새 옵션을 추가합니다.

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

다양한 구성으로 빌드 속도를 측정하려면 다음을 참고하세요. 빌드 프로파일링.

minSdk = 28 이상일 때는 APK로 압축되지 않는 DEX 파일

이제 AGP가 minSdk = 28 또는 더 높습니다. 이로 인해 APK 크기가 늘어나지만 다운로드 크기는 거의 동일합니다.

대신 AGP가 압축된 DEX 파일을 강제로 패키징하도록 하려면 build.gradle 파일에 다음을 추가하면 됩니다.

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

DSL을 사용하여 압축된 네이티브 라이브러리 패키징

네이티브 라이브러리를 압축되지 않은 형식으로 패키징하는 것이 좋습니다. 앱 설치 크기가 줄어들고, 앱 다운로드 크기가 줄어들며, 앱 속도가 빨라집니다. 사용자 로드 시간을 단축할 수 있습니다. 그러나 앱을 빌드할 때 Android Gradle 플러그인이 압축된 네이티브 라이브러리를 패키징하도록 하려면 앱의 build.gradle 파일에서 useLegacyPackagingtrue로 설정합니다.

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

useLegacyPackaging 플래그는 매니페스트 속성 extractNativeLibs를 대체합니다. 자세한 내용은 기본적으로 압축되지 않은 상태로 패키징된 네이티브 라이브러리 출시 노트를 참고하세요.