Android Gradle プラグイン 3.2.0(2018 年 9 月)

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

3.2.1(2018 年 10 月)

このアップデートにより、SDK Build Tools のバージョンを指定する必要がなくなりました。Android Gradle プラグインはデフォルトでバージョン 28.0.3 を使用します。

新機能

  • Android App Bundle のビルドのサポート: アプリバンドルは新しいアップロード形式で、アプリのコンパイル済みコードとリソースはすべてここに含まれますが、APK の生成と署名は Google Play ストアで行います。デベロッパー側では複数の APK を生成、署名、管理する必要がなくなり、ユーザー側ではサイズが削減されデバイスに合わせて最適化されたダウンロードを行えます。詳細については、Android App Bundle の概要をご覧ください。

  • アノテーション プロセッサ使用時の増分ビルド速度改善のサポート: AnnotationProcessorOptions DSL で CommandLineArgumentProvider を拡張しました。これによりユーザーやアノテーション プロセッサ作成者は、増分ビルド プロパティ型のアノテーションを使用してプロセッサの引数にアノテーションを付けられます。このようなアノテーションを使用すると、増分ビルドやキャッシュ済みクリーンビルドの正確性とパフォーマンスが改善されます。詳細については、アノテーション プロセッサへの引数の指定をご覧ください。

  • AndroidX 用移行ツール: Android 3.2 以降で Android Gradle プラグイン 3.2.0 を使用している場合、メニューバーから [Refactor] > [Migrate to AndroidX] を選択することで、プロジェクトのローカル依存関係と Maven 依存関係を移行して新しい AndroidX ライブラリを使用できます。この移行ツールを使用すると、gradle.properties ファイルで次のフラグも true に設定されます。

    • android.useAndroidX: true に設定すると、Android プラグインはサポート ライブラリではなく、該当する AndroidX ライブラリを使用します。このフラグが指定されていない場合、プラグインはデフォルトで false に設定します。

    • android.enableJetifier: true に設定すると、Android プラグインは既存のサードパーティ ライブラリのバイナリを書き換えて、AndroidX 依存関係を使用するように自動的に移行します。このフラグが指定されていない場合、プラグインはデフォルトで false に設定します。このフラグを true に設定できるのは android.useAndroidXtrue に設定されている場合のみであり、それ以外の場合はビルドエラーが発生します。

      詳細については、AndroidX の概要をご覧ください。

  • 新しいコード圧縮ツール R8: R8 はコードの圧縮と難読化用の新しいツールで、ProGuard の後継です。R8 のプレビュー版の使用を開始するには、プロジェクトの gradle.properties ファイルに次の行を追加します。

            android.enableR8 = true
            
            android.enableR8 = true
            

動作の変更

  • D8 での desugar がデフォルトで有効になりました。

  • AAPT2 は Google の Maven リポジトリに移動しました。AAPT2 を使用するには、下記のように、build.gradle ファイル内で google() 依存関係を指定する必要があります。

              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
  • ネイティブの Multidex がデフォルトで有効になりました。以前のバージョンの Android Studio では、Android API レベル 21 以上を搭載しているデバイスにアプリのデバッグ バージョンをデプロイしたときに、ネイティブ multidex が有効になっていました。今回のリリースでは、デバイスへのデプロイであるかリリース用 APK の作成であるかにかかわらず、minSdkVersion=21 以上に設定されているすべてのモジュールに対して、Android Plugin for Gradle がネイティブ multidex を有効にします。

  • プラグインの最小バージョンが protobuf プラグイン(0.8.6)、Kotlin プラグイン(1.2.50)、Crashlytics プラグイン(1.25.4)になりました。

  • 機能モジュール プラグイン com.android.feature では、モジュール名の指定時に英数字とアンダースコアのみを使用するようになりました。たとえば機能モジュール名にダッシュが含まれていると、ビルドエラーが発生します。この動作は、動的機能プラグインの動作と同じです。

バグの修正

  • JavaCompile は、データ バインディングのあるプロジェクトでキャッシュできるようになりました。(問題 #69243050)。
  • データ バインディングのあるライブラリ モジュールのコンパイル回避を改善しました。 (問題 #77539932)。
  • オンデマンド設定を、以前のバージョンでは予測不能なビルドエラーのために無効にしていた場合でも、再度有効にできるようになりました。 (問題 #77910727)。