Android Gradle プラグイン 4.2.0(2021 年 3 月)

互換性

  最小バージョン デフォルトのバージョン 備考
Gradle 6.7.1 なし 詳細については、Gradle のアップデートをご覧ください。
SDK Build Tools 30.0.2 30.0.2 SDK Build Tools をインストールまたは構成します。
NDK なし 21.4.7075529 別のバージョンの NDK をインストールまたは構成します。

新機能

このバージョンの Android Gradle プラグインには、次の新機能が含まれています。

Java 言語バージョン 8(デフォルト)

バージョン 4.2 以降、AGP はデフォルトで Java 8 言語レベルを使用します。 Java 8 では、ラムダを含む多くの新しい言語機能にアクセスできます。 静的インターフェースのメソッドが含まれます。詳細リスト サポートされる機能については、Java 8 ドキュメントをご覧ください。

以前の動作を維持するには、モジュール レベルで Java 7 を明示的に指定します。 build.gradle.kts または build.gradle ファイル:

// 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 v3 がサポートされるようになりました APK 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 でアプリ署名を有効または無効にすることができるようになりました。 。

この例では、Terraform を使用してバリアントごとにアプリ署名を設定する方法を示します。 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, アプリ モジュールで、同じ Gradle プロパティが両方のモジュールに存在する場合などは、 <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 Studio で実行する場合、Gradle ビルドツールは Studio のバンドルされた JDK を使用します。以前のリリースでは、JDK 8 が Studio にバンドルされていました。しかし、4.2 では JDK 11 がバンドルされるようになりました。新しくバンドルされた JDK を使用して Gradle を実行すると、ガベージ コレクタに加えられた変更により、一部で非互換性が生じる場合や JVM のパフォーマンスが影響を受ける場合があります。以下では、これらの問題について説明します。

注: Gradle は JDK 11 で実行することをおすすめしますが、 Gradle の実行に使用する JDK を プロジェクトの構造 クリックします。この設定を変更しても、Gradle の実行に使用する JDK のみが変更され、 Studio 自体の実行に使用される JDK は変更されません。

Studio と Android の互換性 Gradle プラグイン(AGP)

Android Studio 4.2 では、AGP 3.1 と AGP が Gradle 4.8.1 以降を実行している場合は、それ以上になります。詳細 Gradle の互換性に関する情報については、以下をご覧ください。 Gradle を更新します

Gradle ビルドを JDK 11 用に最適化する

この 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 ファイル

minSdk = 28 または場合、AGP はデフォルトで非圧縮形式の DEX ファイルを APK にパッケージ化する 高くなります。この場合、APK のサイズは大きくなりますが、 デバイス上のインストール サイズとダウンロード サイズはほぼ同じです。

代わりに AGP で圧縮された DEX ファイルをパッケージ化するには、 build.gradle ファイルに次の行を追加します。

android {
    packagingOptions {
        dex {
            useLegacyPackaging true
        }
    }
}

DSL を使用して圧縮ネイティブ ライブラリをパッケージ化する

ネイティブ ライブラリは非圧縮形式でパッケージ化することをおすすめします。 アプリのインストール サイズが小さくなり、ダウンロード サイズが小さくなり、アプリの処理が速くなります。 表示時間を大幅に短縮できますただし、Android Gradle プラグインで 圧縮ネイティブ ライブラリをアプリのビルド時に使用し、 useLegacyPackaging これをアプリの build.gradle ファイルの true に追加します。

android {
    packagingOptions {
        jniLibs {
            useLegacyPackaging true
        }
    }
}

フラグ useLegacyPackaging は、マニフェスト属性 extractNativeLibs に代わるものです。詳細な背景情報については、リリースノートをご覧ください デフォルトで圧縮されていないネイティブ ライブラリのパッケージ化