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 署名を使用すると、Android 11 で ADB の増分 APK インストールを使用して、サイズの大きな APK を迅速にデプロイできます。この新しいフラグによって、デプロイの APK 署名ステップが処理されます。 プロセスです
バリアントごとにアプリ署名を設定する
Android Gradle でアプリ署名を有効または無効にすることができるようになりました。 。
Kotlin または Groovy の 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 8 は並列ガベージ コレクタを使用し、JDK 11 は G1 ガベージ コレクタを使用するため、今回の JDK 11 へのアップデートは JVM ガベージ コレクタのデフォルト設定に影響を与えます。
ビルドのパフォーマンスを改善するには、並列ガベージ コレクタを使用して 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
に代わるものです。背景については、リリースノートの 非圧縮ネイティブ ライブラリのパッケージ化(デフォルト)をご覧ください。