詳細については、Gradle のアップデートに関するセクションをご覧ください。, このマイナー アップデートでは、Android 11 でのパッケージの公開設定に関する新しいデフォルト設定と各種機能との互換性が確保されています。, 以前のバージョンの Android では、デバイスにインストールされている全アプリのリストが表示されていました。Android 11(API レベル 30)以降、デフォルトでは、アプリはインストール済みパッケージのフィルタされたリストのみにアクセスできます。 詳細については、Gradle のアップデートに関するセクションをご覧ください。, Android Studio 3.5.3 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。, Android Studio 3.5.2 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。 サードパーティ プラグインの実行順序は、サードパーティ プラグインによって変換が追加される順序と一致します。サードパーティ プラグインの開発者は、API を介して変換の実行順序を制御できません。, テスト プロジェクトで使用できるように MultiDex のサポートを改善し、テストが自動的に, Gradle ビルドが非同期タスクを呼び出し、ワーカー プロセスで障害が発生した場合に、Gradle ビルドが適切に失敗し、根本的なエラー原因を報告する機能を追加しました。, 複数のアプリケーション バイナリ インターフェース(ABI)が含まれるバリアントで特定の ABI を設定するためのサポートを追加しました。, Android 5.0(API レベル 20)以降を実行しているデバイスで、APK 名にスペースが含まれているとインストールが失敗する問題を修正しました。, Android Asset Packaging Tool(AAPT)のエラー出力に関連する、さまざまな問題を修正しました。, JaCoCo 増分インストゥルメンテーションのサポートを追加し、増分ビルドを高速化しました。Android Plugin for Gradle は、JaCoCo instrumenter を直接呼び出します。新しいバージョンの JaCoCo instrumenter を強制するには、ビルド スクリプトの依存関係として追加する必要があります。, 下位互換性のために、ビルド時に PNG を生成するためのベクター型ドローアブルのサポートを追加しました。 WARNING: start “bin\studio.exe” instead of “bin\studio64.exe” if you only have 32 bit JDK installed. 現時点では、ライブラリのサブプロジェクトから、アプリのバージョン コードとバージョン名に自動的にアクセスする方法はありません。, アプリケーション モジュールについては変更がないため、DSL で versionCode や versionName に値を割り当てることができます。その値はアプリのマニフェストや BuildConfig フィールドに反映されます。, モジュールの build.gradle ファイルの android.ndkPath プロパティを使用して、ローカルの NDK インストールのパスを設定できます。, このプロパティを android.ndkVersion プロパティと併用する場合、このパスには android.ndkVersion に一致する NDK バージョンが含まれている必要があります。, ライブラリの単体テストをコンパイルして実行する動作を変更しました。ライブラリの単体テストは、ライブラリ自体のコンパイル / ランタイム クラスに対してコンパイルし、実行するようになりました。そのため、単体テストは外部サブプロジェクトと同じ方法でライブラリを消費します。通常はこの構成により、テストの有効性が高まります。, 場合によっては、ライブラリの単体テストでデータ バインディングを使用すると、DataBindingComponent クラスや BR クラスが欠落することがあります。その場合は、androidTest プロジェクト内のインストゥルメンテーション テストに移植する必要があります。そうしたクラスに対して単体テストをコンパイルして実行すると、正しい出力が得られない可能性があるためです。, io.fabric Gradle プラグインはサポートを終了しており、Android Gradle プラグインのバージョン 4.1 と互換性がありません。サポートが終了した Fabric SDK と、Firebase Crashlytics SDK への移行の詳細については、Firebase Crashlytics SDK へのアップグレードをご覧ください。, Gradle 6.1.1。 Android Studio 4.0 では desugaring エンジンが拡張され、Java 言語 API を desugar できるようになりました。つまり、最近の Android でしか使用できなかった標準的な言語 API(java.util.streams など)を古いバージョンの Android アプリでも使用できるようになりました。 主なバグ修正のリストについては、リリース アップデート情報ブログの関連記事をご覧ください。, Android Studio 3.3.1 をサポートするマイナー アップデートです。さまざまなバグの修正とパフォーマンスの改善が含まれています。, クラスパス同期の改善: ランタイム クラスパスやコンパイル クラスパスの依存関係を解決する際、Android Gradle プラグインは、複数のクラスパスにまたがって現れる依存関係に関し、それ以降の特定のバージョン競合を修正しようとします。, たとえば、ランタイム クラスパスにライブラリ A バージョン 2.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 1.0 が含まれている場合、プラグインはコンパイル クラスパスへの依存関係を自動的にライブラリ A バージョン 2.0 にアップデートして、エラーを回避します。, ただし、ランタイム クラスパスにライブラリ A バージョン 1.0 が含まれ、コンパイル クラスパスにライブラリ A バージョン 2.0 が含まれている場合、プラグインはコンパイル クラスパスの依存関係をライブラリ A バージョン 1.0 にダウングレードしないため、エラーが発生します。詳細については、クラスパス間の競合の修正をご覧ください。, アノテーション プロセッサ使用時の増分 Java コンパイルの改善: このアップデートにより、アノテーション プロセッサ使用時の増分 Java コンパイルのサポートが改善され、ビルド時間が短縮されます。, Kapt を使用しないプロジェクト(Java のみのプロジェクト): 使用するすべてのアノテーション プロセッサが増分アノテーション処理をサポートしている場合、増分 Java コンパイルはデフォルトで有効になります。増分アノテーション プロセッサの採用状況を確認するには、Gradle の問題 5277 をご覧ください。, ただし、1 つ以上のアノテーション プロセッサが増分ビルドをサポートしていない場合、増分 Java コンパイルは有効になりません。代わりに、gradle.properties ファイルで次のフラグを指定できます。, このフラグを指定すると、Android Gradle プラグインは別のタスクでアノテーション プロセッサを実行し、Java コンパイル タスクを段階的に実行できます。, 古い API を使用する場合のデバッグ情報の改善: プラグインは、サポートされなくなった API の使用を検出したとき、その API が使用されている場所の特定に役立つ、より詳細な情報を提供できるようになりました。 システム内のアプリのリストを広範に表示するには、アプリまたはライブラリの Android マニフェストに 要素を追加する必要があります。, Android Gradle プラグイン 4.1 以降は、新しい 宣言と互換性があります。旧バージョンには互換性がありません。 要素を追加した場合、または Android 11 をターゲットとするライブラリや SDK に依存する場合は、アプリをビルドするときにマニフェスト マージエラーが発生する可能性があります。, この問題に対処するために、AGP 3.3 以降用のパッチのセットがリリースされます。旧バージョンの AGP をご使用の場合は、次のいずれかのバージョンにアップグレードしてください。, この新機能の詳細については、Android 11 でのパッケージの公開設定をご覧ください。, Build Analyzer ウィンドウは、最適化の無効化やタスクの不適切な構成など、ビルドプロセスの問題を理解して診断するうえで有益です。この機能は、Android Studio 4.0 以降と Android Gradle プラグイン 4.0.0 以降を併用している場合に利用できます。Android Studio では、次の手順で [Build Analyzer] ウィンドウを開くことができます。, [Build Analyzer] ウィンドウの左側のツリーには、起こり得るビルドの問題がまとめられます。各問題をクリックすると、右側のペインで詳細を調べることができます。Android Studio を使ってビルドを分析すると、ビルド時間を決定付けたタスクセットを求め、各タスクの影響を可視化して把握しやすいようにできます。[Warnings] ノードを展開して、警告の詳細を確認することもできます。, Android Gradle プラグインでは、アプリの最小 API レベルを必要とせずに、多数の Java 8 言語 API の使用がサポートされています。, desugaring と呼ばれるプロセスにより、Android Studio 3.0 以降の DEX コンパイラ D8 はすでに、Java 8 言語機能(ラムダ式、デフォルトのインターフェース メソッド、リソースの試用など)の実質的なサポートを提供しています。Android Studio 4.0 では desugaring エンジンが拡張され、Java 言語 API を desugar できるようになりました。つまり、最近の Android でしか使用できなかった標準的な言語 API(java.util.streams など)を古いバージョンの Android アプリでも使用できるようになりました。, 上記言語 API のサポートのため、D8 は不足している API の実装を含む単独のライブラリ DEX ファイルをコンパイルし、この実装をアプリに追加します。desugar プロセスはアプリのコードを書き換えて、ランタイム時に代わりにこのライブラリを使用するようにします。, このような言語 API のサポートを有効にするには、モジュールの build.gradle ファイルに以下を記述します。, Android Gradle プラグイン 4.0.0 では、ビュー バインディングやデータ バインディングなど、有効または無効にするビルド機能を新しい方法で制御できます。新しい機能が追加されると、デフォルトで無効になります。その場合は、buildFeatures ブロックを使用して、必要な機能のみを有効にできます。これにより、プロジェクトのビルド パフォーマンスを最適化できます。各モジュールのオプションは、モジュール レベルの build.gradle で次のように設定できます。, 以下に示すように、プロジェクトのすべてのモジュールでこのような機能のデフォルト設定を指定することもできます。これには、プロジェクトの gradle.properties ファイルに次のうち 1 つ以上を指定します。ただし、モジュール レベルの build.gradle ファイルで buildFeatures ブロックを使用すると、これらのプロジェクト全体のデフォルト設定をオーバーライドできます。, 以前のバージョンの Android Gradle プラグインでは、すべての機能モジュールがアプリのベース モジュールのみに依存していました。Android Gradle プラグイン 4.0.0 を使用する場合、別の機能モジュールに依存する機能モジュールを含めることができるようになりました。つまり、以下の図に示すとおり、:video 機能は、ベース モジュールに依存する :camera モジュールに依存することが可能です。, 機能モジュール :video は、ベース :app モジュールに依存する機能 :camera に依存します。, つまり、アプリによって機能モジュールのダウンロードがリクエストされると、その機能モジュールに依存する他の機能モジュールもダウンロードされます。アプリの機能モジュールを作成した後、モジュールの build.gradle ファイルで Feature-on-Feature 依存関係を宣言できます。たとえば、:video モジュールで :camera に対する依存関係を宣言する場合、次のようになります。, また、メニューバーから [Help] > [Edit Custom VM Options] をクリックして以下の行を含め、Android Studio の Feature-on-Feature 依存関係機能を有効にする必要があります(たとえば、実行構成の編集時にこの機能をサポートするため)。, Android Gradle プラグイン 4.0.0 以降を使用してアプリをビルドする場合、アプリにコンパイルされる依存関係を記述するメタデータがプラグインに含まれます。アプリをアップロードすると、Play Console でこのメタデータが検査され、次のようなメリットがあります。, データは圧縮され、Google Play の署名鍵で暗号化され、リリースアプリの署名ブロックに保存されます。ただし、ディレクトリ //build/outputs/sdk-dependencies/release/sdkDependency.txt のローカル中間ビルドファイルでは自分でメタデータを検査できます。, この情報を共有したくない場合は、モジュールの build.gradle ファイルに次の情報を含めることでオプトアウトできます。, アプリの AAR 依存関係から C / C++ ライブラリをインポートできるようになりました。以下で説明する構成手順に従うと、Gradle により自動的にこれらのネイティブ ライブラリが CMake などの外部ネイティブ ビルドシステムで使用できるようになります。Gradle はこれらのライブラリをビルドで使用できるようにするだけなので、これらを使用するには、ビルド スクリプトを構成する必要があります。, 依存関係ごとに、1 つ以上のモジュールで構成される Prefab パッケージを最大 1 つ公開できます。Prefab モジュールは単一のライブラリで、共有ライブラリ、静的ライブラリ、ヘッダーのみのライブラリのいずれかになります。, 通常、パッケージ名は Maven アーティファクト名と一致し、モジュール名はライブラリ名と一致しますが、常に一致するとは限りません。ライブラリのパッケージとモジュール名を知る必要があるため、依存関係のドキュメントを参照して名前を確認する必要があります。, 必要な手順を確認するには、使用する予定の外部ネイティブ ビルドシステムをクリックします。, AAR に含まれているネイティブ依存関係は、CMAKE_FIND_ROOT_PATH 変数を介して CMake プロジェクトに公開されます。この値は、CMake が呼び出されたときに Gradle によって自動的に設定されるため、ビルドシステムでこの変数を変更する場合は、割り当てるのではなく追加する必要があります。, 各依存関係は、CMake ビルドに config-file パッケージを公開します。これは find_package コマンドでインポートします。このコマンドで、指定されたパッケージ名とバージョンに一致する config-file パッケージを検索し、ビルドで使用するために定義したターゲットを公開します。たとえば、アプリで libapp.so を定義し curl を使用する場合は、CMakeLists.txt ファイルに次のように記述します。, app.cpp で #include "curl/curl.h" を指定できるようになりました。プロジェクトをビルドすると、外部ネイティブ ビルドシステムによって自動的に、APK または App Bundle の libcurl.so とパッケージ libcurl.so に libapp.so がリンクされます。詳細については、curl prefab のサンプルをご覧ください。, Android Gradle プラグイン 3.6.0 から、Android App Bundle による Instant App のビルドとパッケージ化を行う Dynamic Feature プラグイン(com.android.dynamic-feature)の使用を優先し、Feature プラグイン(com.android.feature)と Instant App プラグイン(com.android.instantapp)のサポートを終了しました。, Android Gradle プラグイン 4.0.0 以降では、サポート終了済みの上記プラグインは完全に削除されています。このため、最新の Android Gradle プラグインを使用するには、Android App Bundle に対応できるように Instant App を移行する必要があります。