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 ではメッセージが
CMake と ndk-build
を使用するネイティブ ビルドから
デフォルトで C/C++ コンパイラ出力のみを表示する。以前は、出力行が
生成されるため、大量のファイルが生成され、
報告します。
ネイティブ出力全体を表示したい場合は、新しい
Gradle プロパティ android.native.buildOutput
を verbose
に設定。
このプロパティは、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
に代わるものです。詳細な背景情報については、リリースノートをご覧ください
デフォルトで圧縮されていないネイティブ ライブラリのパッケージ化。