Android Gradle プラグイン 3.1.0(2018 年 3 月)
このバージョンの Android プラグインには、次のものが必要です。
最小バージョン | デフォルトのバージョン | 備考 | |
---|---|---|---|
Gradle | 4.4 | 4.4 | 詳細については、Gradle のアップデートをご覧ください。 |
SDK Build Tools | 27.0.3 | 27.0.3 | SDK Build Tools をインストールまたは設定します。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 のプレビュー版を使用している場合、JDK ではなく、SDK ビルドツールに含まれるライブラリに対してコンパイルされるようになりました。そのため、JDK には存在するが SDK ビルドツール ライブラリには存在しない API にアクセスすると、コンパイル エラーが発生します。
動作の変更
-
それぞれが異なる ABI をターゲットとする複数の APK をビルドする場合、
mips
、mips64
、armeabi
の各 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 プラグインが含まれているサブプロジェクトが複数存在する場合)、プロジェクト同期エラーが発生する問題を修正しました。