Android Gradle プラグイン 8.0.0 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。
互換性
最小バージョン | デフォルトのバージョン | 備考 | |
---|---|---|---|
Gradle | 8.0 | 8.0 | 詳細については、Gradle のアップデートをご覧ください。 |
SDK Build Tools | 30.0.3 | 30.0.3 | SDK Build Tools をインストールまたは設定します。 |
NDK | なし | 25.1.8937393 | 別のバージョンの NDK をインストールまたは設定します。 |
JDK | 17 | 17 | 詳細については、JDK バージョンの設定をご覧ください。 |
パッチリリース
Android Gradle プラグイン 8.0 のパッチリリースを以下に示します。
Android Gradle プラグイン 8.0.2(2023 年 5 月)
AGP 8.0.2 で修正されたバグの一覧については、Android Studio 2022.2.1 のクローズされた問題をご覧ください。
Android Gradle プラグイン 8.0.1(2023 年 5 月)
このマイナー アップデートには、次のバグ修正が含まれています。
修正された問題 | |
---|---|
エラー: AGP 7.2.2 から 7.4.0 へのアップグレード後に「No VersionRequirement with the specific id in the table」と表示される
|
|
markTypeAsLive AGP 7.4.1 で R8 NullPointerException が発生する
|
|
[R8 4.0.53] Android 11 でのハードクラス検証の失敗
|
重大な変更: モジュール レベルのビルド スクリプトで名前空間が必要に
名前空間は、マニフェスト ファイルではなく、モジュール レベルの build.gradle.kts
ファイルで設定する必要があります。AGP 7.3 以降では、namespace
DSL プロパティを使用できます。詳細については、名前空間を設定するをご覧ください。
名前空間 DSL に移行する際は、次の問題に注意してください。
- 以前のバージョンの AGP では、テストの名前空間がメインの名前空間またはアプリケーション ID から推測されることがありますが、その推測が正しくない場合があります。プロジェクトのメイン Namespace とテスト Namespace が同じである場合、AGP アップグレード アシスタントはアップグレードをブロックします。アップグレードがブロックされた場合は、
testNamespace
を手動で変更し、それに応じてソースコードを変更する必要があります。 - テストの名前空間を変更すると、コードはコンパイルされるものの、インストルメンテーション テストが実行時に失敗する可能性があります。このエラーは、インストルメンテーション テストのソースコードが
androidTest
とアプリの両方のソースで定義されているリソースを参照している場合に発生する可能性があります。
詳しくは、問題 #191813691 コメント #19 をご覧ください。
破壊的変更: ビルド オプションのデフォルト値
AGP 8.0 以降では、ビルド パフォーマンスを向上させるために、これらのフラグのデフォルト値が変更されています。これらの変更の一部をサポートするようにコードを調整する際にヘルプが必要な場合は、AGP Upgrade Assistant([Tools] > [AGP Upgrade Assistant])を使用してください。アップグレード アシスタントは、新しい動作に対応するようにコードを更新するか、以前の動作を維持するようにフラグを設定する手順を案内します。
フラグ | 新しいデフォルト値 | 以前のデフォルト値 | 備考 |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 では、デフォルトで BuildConfig は生成されません。このオプションは、必要なプロジェクトの DSL を使用して指定する必要があります。 |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 では、AIDL サポートはデフォルトで有効になっていません。このオプションは、必要なプロジェクトの DSL を使用して指定する必要があります。このフラグは AGP 9.0 で削除される予定です。 |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 では、RenderScript のサポートはデフォルトで有効になっていません。このオプションは、必要なプロジェクトの DSL を使用して指定する必要があります。このフラグは AGP 9.0 で削除される予定です。 |
android.nonFinalResIds |
true |
false |
AGP 8.0 では、デフォルトで非 final フィールドを含む R クラスが生成されます。 |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 は、現在のモジュールで定義されたリソースに対してのみ R クラスを生成します。 |
android.enableR8.fullMode |
true |
false |
AGP 8.0 では、R8 フルモードがデフォルトで有効になっています。詳しくは、R8 フルモードをご覧ください。 |
互換性を破る変更: ビルド オプション値の適用
AGP 8.0 以降では、これらのフラグの値を変更できなくなります。gradle.properties
ファイルで指定すると、値は無視され、AGP は警告を出力します。
フラグ | 適用された値 | 備考 |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 では、構成フェーズで構成解決が検出されると、Gradle 構成時間に悪影響を及ぼすため、警告が発行されます。 |
android.r8.failOnMissingClasses |
true |
AGP 8.0 では、DEX の最適化を向上させるため、クラスが不足している場合、R8 を使用するビルドが失敗します。これに対処するには、欠落しているライブラリまたは -dontwarn の保持ルールを追加する必要があります。詳しくは、R8 圧縮ツールでのクラス欠落警告をご覧ください。 |
android.testConfig.useRelativePath |
true |
単体テストで Android リソース、アセット、マニフェストを使用するサポートが有効になっている場合、AGP 8.0 は相対パスのみを含む test_config.properties ファイルを生成します。これにより、Android 単体テストで常に Gradle ビルドキャッシュを使用できるようになります。 |
android.useNewJarCreator |
true |
AGP は、JAR ファイルの作成時に Zipflinger ライブラリを使用して、ビルドのパフォーマンスを向上させます。 |
android.bundletool.includeRepositoriesInDependencyReport |
true |
AAB と APK で SDK の依存関係情報を追加することが有効になっている場合、AGP 8.0 はプロジェクト リポジトリのリストもこの情報に追加します。詳しくは、Google Play Console の依存関係情報をご覧ください。 |
android.enableArtProfiles |
true |
ベースライン プロファイルが常に生成されるようになりました。詳しくは、ベースライン プロファイルをご覧ください。 |
android.enableNewResourceShrinker |
true |
デフォルトで新しいリソース シュリンカーの実装を使用します。新しいリソース シュリンカーは、動的機能のサポートを含んでいます。 |
android.enableSourceSetPathsMap |
true |
相対リソースパス マッピングの計算に使用されるため、Gradle ビルドがより頻繁に最新の状態になります。 |
android.cacheCompileLibResources |
true |
Gradle はプロジェクトの場所を基準にリソース ファイルを追跡するため、コンパイル済みライブラリ リソースをデフォルトでキャッシュに保存できるようになりました。android.enableSourceSetPathsMap を有効にする必要があります。 |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 では、デフォルトで SoftwareComponent は作成されません。代わりに、AGP は公開 DSL を使用して公開するように構成されたバリアントに対してのみ SoftwareComponent を作成します。 |
実行プロファイルの新しい安定版フラグ
AGP に新しいフラグ android.settings.executionProfile
が追加されました。このフラグを使用すると、SettingsExtension
のデフォルトの実行プロファイルをオーバーライドできます。詳しくは、設定プラグインのドキュメントをご覧ください。
試験運用版フラグをプレビューするには、プレビュー リリースノートをご覧ください。
Kotlin の遅延プロパティの割り当てはサポートされていません
ビルドスクリプトに Gradle の Kotlin DSL を使用している場合、Android Studio と AGP 8.0 は =
演算子を使用した試験運用版のプロパティ割り当てをサポートしていないことに注意してください。この機能の詳細については、リリースノートとドキュメントをご覧ください。
Build Analyzer のタスク カテゴリ
Android Studio Flamingo 以降、Build Analyzer には、ビルド時間に影響するタスクの新しいデフォルト ビューが用意されています。プロジェクトで AGP 8.0 以降を使用している場合、Build Analyzer ではタスクが個別に表示されるのではなく、カテゴリ別にグループ化されます。たとえば、Android リソース、Kotlin、Dexing に固有のタスクはグループ化され、ビルド時間で並べ替えられます。これにより、ビルド時間に最も影響を与えるカテゴリを簡単に把握できます。各カテゴリを開くと、対応するタスクのリストが表示されます。タスクをグループ化せずに個別に表示するには、[グループ化] プルダウンを使用します。
新しい設定プラグイン
AGP 8.0.0-alpha09 では、新しい設定プラグインが導入されています。設定プラグインを使用すると、すべてのモジュールに適用されるグローバル構成を一元管理できるため、複数のモジュールで構成をコピーして貼り付ける必要がなくなります。また、設定プラグインを使用して、ツールの実行プロファイル(ツールの実行方法に関するさまざまな手順)を作成し、それらを切り替えることもできます。
設定プラグインを使用するには、settings.gradle
ファイルでプラグインを適用します。
apply plugin 'com.android.settings'
グローバル構成を一元化する
グローバル構成を構成するには、settings.gradle
ファイルの新しい android
ブロックを使用します。次の例をご覧ください。
android {
compileSdk 31
minSdk 28
...
}
ツール実行プロファイル
設定プラグインでは、一部のツールの実行プロファイルを作成することもできます。実行プロファイルは、ツールの実行方法を決定します。環境に応じて、さまざまな実行プロファイルを選択できます。実行プロファイルでは、ツールの JVM 引数を設定し、別のプロセスで実行するように構成できます。現在、R8 ツールのみがサポートされています。
次の例に示すように、実行プロファイルを作成し、settings.gradle
ファイルでデフォルトの実行プロファイルを設定します。
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
デフォルトのプロファイルをオーバーライドするには、gradle.properties
ファイルの android.experimental.settings.executionProfile
プロパティを使用して別のプロファイルを選択します。
android.experimental.settings.executionProfile=high
このプロパティはコマンドラインを使用して設定することもできます。これにより、さまざまなワークフローを設定できます。たとえば、継続的インテグレーション ワークフローがある場合、コマンドラインを使用して settings.gradle
ファイルを変更せずに実行プロファイルを変更できます。
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
AGP 8.0 の実行に JDK 17 が必要
Android Gradle プラグイン 8.0 を使用してアプリをビルドする場合、Gradle の実行に JDK 17 が必要になりました。Android Studio Flamingo には JDK 17 がバンドルされており、Gradle がデフォルトでこれを使用するように設定されています。そのため、ほとんどの Android Studio ユーザーはプロジェクトの設定を変更する必要がありません。
Android Studio 内で AGP が使用する JDK バージョンを手動で設定する必要がある場合は、JDK 17 以降を使用する必要があります。
Android Studio とは別に AGP を使用する場合は、JAVA_HOME
環境変数または -Dorg.gradle.java.home
コマンドライン オプションを JDK 17 のインストール ディレクトリに設定して、JDK バージョンをアップグレードします。
修正された問題
Android Gradle プラグイン 8.0.0
修正された問題 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Android Gradle プラグイン |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer(D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
lint の統合 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
圧縮ツール(R8) |
|
Android Gradle プラグイン 8.0.1
修正された問題 | ||||
---|---|---|---|---|
圧縮ツール(R8) |
|
Android Gradle プラグイン 8.0.2
修正された問題 | |||||
---|---|---|---|---|---|
圧縮ツール(R8) |
|