Android Gradle プラグイン 8.1.0(2023 年 7 月)

Android Gradle プラグイン 8.1.0 はメジャー リリースで、さまざまな新機能や改善措置が組み込まれています。

互換性

最小バージョン デフォルトのバージョン Notes
Gradle 8.0 8.0 詳細については、Gradle のアップデートをご覧ください。
SDK Build Tools 33.0.1 33.0.1 SDK Build Tools をインストールまたは設定します。
NDK なし 25.1.8937393 別のバージョンの NDK をインストールまたは設定します。
JDK 17 17 詳細については、JDK バージョンの設定をご覧ください。

Kotlin DSL がビルド構成のデフォルトである

新しいプロジェクトでは、ビルド構成にデフォルトで Kotlin DSL(build.gradle.kts)が使用されるようになりました。構文のハイライト表示、コード補完、宣言へのナビゲーションなど、Groovy DSL(build.gradle)よりも優れた編集エクスペリエンスを提供します。ビルド構成に AGP 8.1 と Kotlin DSL を使用している場合は、Gradle 8.1 を使用することをおすすめします。詳細については、Kotlin DSL 移行ガイドをご覧ください。

アプリ別の言語の自動サポート

Android Studio Giraffe Canary 7 と AGP 8.1.0-alpha07 以降では、アプリ別の言語設定を自動的にサポートするようにアプリを設定できます。Android Gradle プラグインはプロジェクト リソースに基づいて LocaleConfig ファイルを生成し、そのファイルへの参照を最終マニフェスト ファイルに追加します。そのため、手動で行う必要はありません。AGP は、アプリ モジュールの res フォルダ内のリソースと、ライブラリ モジュールの依存関係を使用して、LocaleConfig ファイルに含めるロケールを決定します。

自動のアプリ別の言語機能は、Android 13(API レベル 33)以降を実行するアプリをサポートしています。この機能を使用するには、compileSdkVersion を 33 以上に設定する必要があります。以前のバージョンの Android のアプリ別の言語設定を設定するには、API とアプリ内言語選択ツールを使用する必要があります。

アプリ別の言語の自動サポートを有効にするには、デフォルトの言語 / 地域を指定します。

  1. アプリ モジュールの res フォルダに、resources.properties という名前の新しいファイルを作成します。
  2. resources.properties ファイルで、unqualifiedResLocale ラベルを使用してデフォルトの言語 / 地域を設定します。ロケール名を作成するには、言語コードをスクリプトや地域コード(省略可)と組み合わせ、それぞれをダッシュで区切ります。

    • 言語: 2 文字または 3 文字の ISO 639-1 コードを使用します。
    • スクリプト(省略可): ISO 15924 コードを使用します。
    • 地域(省略可): 2 文字の ISO 3166-1-alpha-2 コードまたは 3 桁の UN_M.49 コードを使用します。

    たとえば、デフォルトのロケールがアメリカ英語である場合は次のとおりです。

        unqualifiedResLocale=en-US
        

AGP は、このデフォルトのロケールと、res フォルダの values-* ディレクトリを使用して指定した代替ロケールを、自動生成された LocaleConfig ファイルに追加します。

アプリ別の言語の自動サポートはデフォルトでオフになっています。この機能を有効にするには、モジュール レベルの build.gradle.kts ファイル(Groovy を使用している場合は build.gradle ファイル)の androidResources {} ブロックで generateLocaleConfig 設定を使用します。

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

Groovy

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android lint に、JVM 17 をターゲットとするバイトコードが含まれている

AGP 8.1.0-alpha04 以降、Android Lint には、JVM 17 をターゲットとするバイトコードが含まれています。カスタム lint チェックを作成する場合は、JDK 17 以降でコンパイルし、Kotlin コンパイラ オプションで jvmTarget = '17' を指定する必要があります。

lint ツールについて詳しくは、lint チェックでコードを改善するをご覧ください。

ネイティブ ライブラリの圧縮設定を DSL に移動しました

AGP 8.1.0-alpha10 以降では、マニフェストの代わりに DSL を使用してネイティブ ライブラリの圧縮を構成しないと、警告が表示されます。次のガイダンスでは、DSL を使用するように構成を更新する方法について説明します。これらの更新を行うには、AGP Upgrade Assistant([Tools] > [AGP Upgrade Assistant])を使用します。

非圧縮ネイティブ ライブラリを使用するには、マニフェストから android::extractNativeLibs 属性を削除し、モジュール レベルの build.gradle.kts ファイル(Groovy を使用している場合は build.gradle ファイル)に次のコードを追加します。

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

Groovy

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

試験運用版ビルドフラグ

これらは、AGP 8.1 で利用可能なビルドを設定するための試験運用版のフラグです。

フラグ 追加先 デフォルト値 Notes
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes AGP 8.0 false 署名設定を指定せずにこの設定を有効にすると、プロファイル可能またはデバッグ可能なビルドの実行時に、AGP はデフォルトのデバッグ署名設定を使用します。このフラグはデフォルトで無効になっており、ビルド作成者が特定のプロファイリング署名設定を宣言することをおすすめします。
android.experimental.library.desugarAndroidTest AGP 8.0 false このフラグを使用すると、ライブラリ ビルダーは、lint チェックなどで生成された AAR に影響を与えることなく、テスト APK のコアライブラリの脱糖を有効にできます。 最終的には、Variant API でこの動作をサポートする予定です。
android.experimental.testOptions.managedDevices.customDevice AGP 8.0 false 有効にすると、Gradle で管理されているデバイスは、プラグインで提供できるユーザー定義のカスタム デバイスタイプを許可します。Firebase Test Lab プラグインを使用する場合は、このフラグを有効にする必要があります。
android.lint.printStackTrace AGP 8.0 false 有効にすると、Android lint はクラッシュ時にスタック トレースを出力します。このフラグの機能は、LINT_PRINT_STACKTRACE 環境変数と同じです。
android.experimental.testOptions.managedDevices.maxConcurrentDevices AGP 8.0 なし 任意の時点でアクティブになる Gradle で管理されているデバイス(AVD)の同時実行の最大数を指定します。値が 0 または負の場合、デバイスの最大数はありません。
android.experimental.testOptions.installApkTimeout AGP 8.0 なし APK のインストールのタイムアウト時間(秒)。値が 0 または負の場合は、UTP によってデフォルト値に設定されます。