Android Gradle プラグイン 3.1.0(2018 年 3 月)

このバージョンの Android プラグインには、次のものが必要です。

  • Gradle 4.4 以降。

    詳細については、Gradle のアップデートに関するセクションをご覧ください。

  • Build Tools 27.0.3 以降。

    android.buildToolsVersion プロパティを使用してビルドツールのバージョンを指定する必要がなくなりました。プラグインはデフォルトで必要な最低限のバージョンを使用します。

新しい DEX コンパイラ D8

Android Studio は、D8 という新しい DEX コンパイラをデフォルトで使用するようになりました。DEX コンパイルは、.class バイトコードを Android ランタイム(古いバージョンの Android では Dalvik)用の .dex バイトコードに変換する処理です。DX という以前のコンパイラと比較すると、D8 はコンパイルが高速で、出力される DEX ファイルのサイズが小さく、しかもアプリのランタイム パフォーマンスは同等以上です。

D8 によって日々のアプリ開発ワークフローが変わることはありませんが、新しいコンパイラに関連する問題が発生した場合は、バグを報告してください。プロジェクトの gradle.properties ファイルで次のように指定すると、D8 を一時的に無効にして DX を使用できます。

      android.enableD8=false
    

Java 8 言語機能を使用しているプロジェクトの場合、デフォルトで増分 desugar が有効になってます。無効にするには、プロジェクトの gradle.properties ファイルで次のように指定します。

      android.enableIncrementalDesugaring=false.
    

プレビュー ユーザー: D8 のプレビュー版をすでにお使いの場合、D8 は JDK ではなく、SDK Build Tools に含まれるライブラリに対してコンパイルされるようになりました。そのため、JDK に存在し、SDK ビルドツール ライブラリには存在しない API にアクセスすると、コンパイル エラーが発生します。

動作の変更

  • それぞれが異なる ABI をターゲットとする複数の APK をビルドする場合、mipsmips64armeabi の各 ABI 用の APK がデフォルトで生成されなくなりました。

    各 ABI をターゲットとする APK をビルドするには、NDK r16b 以前を使用して、下記のように build.gradle ファイル内で対象 ABI を指定する必要があります。

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • Android プラグインのビルド キャッシュが、30 日以上経過したキャッシュ エントリを削除するようになりました。

  • resConfig"auto" を渡しても、APK にパッケージ化する文字列リソースが自動的に選択されなくなりました。引き続き "auto" を使用する場合、プラグインはアプリと依存関係で提供されるすべての文字列リソースをパッケージ化します。そのため、プラグインを APK にパッケージ化する各ロケールを指定する必要があります。

  • ローカル モジュールはアプリのテスト APK に依存できないため、androidTestImplementation の代わりに androidTestApi コンフィグレーションを使用してインストルメント化テストに依存関係を追加すると、Gradle は次の警告を発行します。

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

修正

  • Android Studio がコンポジット ビルドの依存関係を正しく認識しない問題を修正しました。
  • 1 回のビルドで Android プラグインを複数回読み込むと(たとえば buildscript のクラスパスに Android プラグインが含まれているサブプロジェクトが複数存在する場合)、プロジェクト同期エラーが発生する問題を修正しました。