Android Gradle プラグイン 2.2.0(2016 年 9 月)

依存関係:
新規:
  • パフォーマンスの改善と新機能が含まれる Gradle 2.14.1 を使用します。また、Gradle デーモン使用時のローカル権限昇格を可能にするセキュリティ脆弱性を修正しました。詳細については、Gradle リリースノートをご覧ください。
  • externalNativeBuild {} DSL を使用することで、Gradle でネイティブ ソースにリンクし、CMake や ndk-build を使用してネイティブ ライブラリをコンパイルできるようになりました。Gradle は、ネイティブ ライブラリを作成した後、APK にパッケージ化します。CMake と ndk-build を Gradle で使用する方法については、プロジェクトへの C / C++ コードの追加をご覧ください。
  • コマンドラインからビルド実行すると、Gradle は不足している SDK コンポーネントやプロジェクトが依存しているアップデートの自動ダウンロードを試みます。 詳細については、不足しているパッケージの Gradle での自動ダウンロードをご覧ください。
  • 新しい試験運用版のキャッシュ機能により、Gradle では、pre-dex をかけ、保存し、pre-dex がかけられたバージョンのライブラリを再利用することで、ビルド時間を短縮できます。この試験運用版機能の使用方法について詳しくは、ビルド キャッシュのガイドをご覧ください。
  • 圧縮、署名、zipalign を 1 つのタスクで処理する新しいデフォルトのパッケージ化パイプラインを採用することで、ビルドのパフォーマンスを改善しました。gradle.properties ファイルに android.useOldPackaging=true を追加すると、以前のパッケージ化ツールを使用するように戻せます。新しいパッケージ化ツールの使用中、zipalignDebug タスクは使用できません。ただし、createZipAlignTask(String taskName, File inputFile, File outputFile) メソッドを呼び出すことで、独自に作成できます。
  • APK 署名では、従来の JAR 署名に加えて APK 署名スキーム v2 が使用されるようになりました。生成される APK は、すべての Android プラットフォームで受け入れられます。署名後にこれらの APK を変更すると、v2 署名が無効になり、デバイスへのインストールができなくなります。この機能を無効にするには、モジュール レベルの build.gradle ファイルに次のコードを追加します。

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • Multidex ビルドでは、ProGuard ルールを使用して、Gradle でアプリのメインの DEX ファイルにコンパイルする必要があるクラスを決定できるようになりました。Android システムはアプリの起動時にメインの DEX ファイルを最初に読み込むため、特定のクラスをメインの DEX ファイルにコンパイルすることで、起動時に優先順位を付けられます。メインの DEX ファイル専用の ProGuard 設定ファイルを作成してから、 buildTypes.multiDexKeepProguard を使用して、設定ファイルのパスを Gradle に渡します。この DSL の使用は、アプリの一般的な ProGuard ルールを提供しメイン DEX ファイルのクラスを指定しない buildTypes.proguardFiles の使用とは異なります。
  • デバイスにインストールするときにアプリのサイズを小さくできる android:extractNativeLibs フラグのサポートを追加しました。アプリのマニフェストの <application> 要素でこのフラグを false に設定すると、Gradle は圧縮されていないバージョンと調整されたバージョンのネイティブ ライブラリを APK にパッケージ化します。PackageManager がインストール時に APK からデバイスのファイル システムにネイティブ ライブラリをコピーできなくなり、アプリの差分アップデートを小さくできるというメリットもあります。
  • プロダクト フレーバーに versionNameSuffix applicationIdSuffix を指定できるようになりました。(問題 59614)。
変更内容:
  • getDefaultProguardFile は、Android Plugin for Gradle が提供するデフォルトの ProGuard ファイルを返すようになり、Android SDK のファイルを使用しなくなりました。
  • Jack コンパイラのパフォーマンスと機能を改善しました:
    • testCoverageEnabledtrue に設定すると、Jack で Jacoco テスト カバレッジがサポートされるようになりました。
    • アノテーション プロセッサのサポートを改善しました。compile 依存関係など、クラスパス上のアノテーション プロセッサは、ビルドに自動的に適用されます。ビルドでアノテーション プロセッサを指定し、モジュール レベルの build.gradle ファイルで javaCompileOptions.annotationProcessorOptions {} DSL を使用して引数を渡すこともできます。

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      コンパイル時にアノテーション プロセッサを適用するが APK に含めないという場合は、annotationProcessor 依存関係スコープを使用します。

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • 設定可能なパラメータのリストを表示するには、コマンドラインから次のコマンドを実行します。

      java -jar /build-tools/jack.jar --help-properties
      

    • Gradle デーモンのヒープサイズが 1.5 GB 以上の場合、Jack はデフォルトで Gradle と同じプロセスで実行されるようになりました。デーモンのヒープサイズを調整するには、gradle.properties ファイルに次の行を追加します。

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M