Android Gradle プラグイン 8.0.0(2023 年 4 月)

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 ファイルで名前空間を設定する必要があります。 記述する必要があります。namespace DSL プロパティの使用を開始できます。 AGP 7.3 以降。詳しくは以下をご覧ください。 名前空間を設定します

名前空間 DSL に移行する場合は、次の問題に注意してください。

  • 以前のバージョンの AGP では、メインの名前空間からテスト名前空間を推測する 誤って追加されることがあります。AGP Upgrade Assistant は、 プロジェクトのメインの名前空間とテスト名前空間が 同じですアップグレードがブロックされている場合は、testNamespace を手動で変更する必要があります。 それに応じてソースコードを変更する必要があります。
  • テスト名前空間を変更すると、コードがコンパイル インストルメンテーション テストは実行時に失敗します。これは、 インストルメンテーション テストのソースコードが、 androidTest とアプリのソース。

詳細については、次をご覧ください: 問題 #191813691 コメント #19

互換性を破る変更: ビルド オプションのデフォルト値

AGP 8.0 以降、これらのフラグのデフォルト値は ビルドのパフォーマンスを向上させることができます。特定のユースケースに対応するためにコードを調整する AGP Upgrade Assistant を ([Tools] > [AGP Upgrade Assistant])。Upgrade Assistant のガイドでは、 新しい動作に合わせてコードを更新するか、フラグを設定して 変更することもできます。

フラグ 新しいデフォルト値 以前のデフォルト値
android.defaults.buildfeatures.buildconfig false true AGP 8.0 は、デフォルトでは BuildConfig を生成しません。必要な 必要があります。
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 は R8 を使用するビルドが失敗する DEX の最適化を強化できますこの問題に対処するには、 -dontwarn keep ルールです。詳しくは 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 新しい Resource Shinker 実装をデフォルトで使用します。新しい リソース圧縮ツールには動的な機能のサポートが含まれています。
android.enableSourceSetPathsMap true 相対リソースパスのマッピングを計算するために使用され、Gradle がビルドします。 より頻繁に最新の状態に保たれます。
android.cacheCompileLibResources true Gradle により、コンパイル済みのライブラリ リソースをデフォルトでキャッシュに保存できるようになりました。 プロジェクトの場所を基準にリソース ファイルを追跡します。要件 android.enableSourceSetPathsMap を有効にします。
android.disableAutomaticComponentCreation true AGP 8.0 は、デフォルトでは SoftwareComponent を作成しません。AGP は代わりに 公開するように設定されているバリアントの SoftwareComponent のみ パブリッシュします

実行プロファイルの新しい安定版フラグ

AGP には新しいフラグ android.settings.executionProfile が含まれています。このフラグを使用して、 デフォルト実行プロファイルをオーバーライド SettingsExtension。 詳細については、設定プラグインのドキュメントをご覧ください。

試験運用版フラグをプレビューするには、以下をご覧ください。 プレビュー リリースノートをご覧ください。

Kotlin の遅延プロパティ割り当てはサポートされていない

ビルド スクリプトに Gradle の Kotlin DSL を使用する場合は、 Studio と AGP 8.0 では、 = 演算子。この機能の詳細については、 リリースノート および ドキュメントをご覧ください。

Build Analyzer のタスクカテゴリ

Android Studio Flamingo 以降、Build Analyzer に いくつかのタスクを自動的に実行するタスクです。プロジェクトで AGP 8.0 以降を使用している場合は、 Build Analyzer では、タスクを個別に表示するのではなく、 あります。Android リソース、Kotlin、Dexing に固有のタスクなど グループ化され、ビルド期間で並べ替えられます。そのため ビルド時間に最も影響を与えるカテゴリを知ることができます。各カテゴリを展開する 対応するタスクのリストが表示されます。タスクを個別に表示するには、次の操作を行います。 グループ化しない場合は、[グループ条件] プルダウンを使用します。

Build Analyzer のタスクカテゴリ。

新しい設定プラグイン

AGP 8.0.0-alpha09 では、新しい設定プラグインが導入されています。設定プラグインを使用すると、 グローバル構成(すべてのモジュールに適用される構成)を 1 か所に集約できるため、構成を複数のファイルにコピーして貼り付ける必要も 説明します。また、設定プラグインを使用して Google Cloud の 実行プロファイル、またはツールを実行するためのさまざまな手順 切り替えることができます。

設定プラグインを使用するには、settings.gradle ファイルでプラグインを適用します。

apply plugin 'com.android.settings'

グローバル構成の一元化

グローバル設定を構成するには、新しい android ブロックを settings.gradle ファイル。次の例をご覧ください。

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"
  }
}

デフォルトのプロファイルをオーバーライドするには、 android.experimental.settings.executionProfile プロパティ gradle.properties ファイル:

android.experimental.settings.executionProfile=high

このプロパティは、コマンドラインを使用して設定することもできます。これにより、 ワークフローを切り替えることができます。たとえば 継続的インテグレーション/ コマンドラインを使用すれば、何もしなくても実行プロファイルを変更できる settings.gradle ファイルを変更します。

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

AGP 8.0 を実行するために JDK 17 が必要

Android Gradle プラグイン 8.0 を使用してアプリをビルドする場合、JDK 17 が必要になりました Gradle を実行します。Android Studio Flamingo は JDK 17 をバンドルし、Gradle を設定して、 デフォルトで使用するため、ほとんどの Android Studio ユーザーは、 そのプロジェクトに対する構成変更を自動的に追跡します。

手動で JDK バージョンを設定する必要がある場合 使用するには、JDK 17 以降を使用する必要があります。

Android Studio とは別に AGP を使用する場合は、次の方法で JDK バージョンをアップグレードしてください。 JAVA_HOME の設定 環境変数 または -Dorg.gradle.java.home コマンドライン オプション JDK 17 のインストール ディレクトリに移動します。