Android Gradle-Plug-in 2.2.0 (September 2016)

Abhängigkeiten:
Neu:
  • Verwendet Gradle 2.14.1, die Leistungsverbesserungen und neue Funktionen enthält und eine Sicherheitslücke behebt, die eine lokale Rechteausweitung bei Verwendung des Gradle-Daemons ermöglicht. Weitere Informationen finden Sie in den Gradle-Versionshinweisen.
  • Mit der externalNativeBuild {}-DSL können Sie in Gradle jetzt Verknüpfungen zu Ihren nativen Quellen erstellen und native Bibliotheken mit CMake oder ndk-build kompilieren. Nachdem Sie Ihre nativen Bibliotheken erstellt haben, verpackt Gradle sie in Ihr APK. Weitere Informationen zur Verwendung von CMake und ndk-build mit Gradle finden Sie unter Ihrem Projekt C- und C++-Code hinzufügen.
  • Wenn Sie einen Build über die Befehlszeile ausführen, versucht Gradle jetzt, alle fehlenden SDK-Komponenten oder Updates, von denen Ihr Projekt abhängig ist, automatisch herunterzuladen. Weitere Informationen finden Sie unter Fehlende Pakete mit Gradle automatisch herunterladen.
  • Mit einer neuen experimentellen Caching-Funktion kann Gradle die Build-Zeit verkürzen, indem die vorab dexierten Versionen der Bibliotheken vorab dexiert, gespeichert und wiederverwendet werden. Weitere Informationen zur Verwendung dieser experimentellen Funktion finden Sie in der Anleitung zum Erstellen von Cache.
  • Verbessert die Build-Leistung durch die Einführung einer neuen Standardpipeline für die Paketerstellung, die das Komprimierung, das Signieren und das zipaligning in einer Aufgabe übernimmt. Du kannst zu den älteren Pakettools zurückkehren, indem du android.useOldPackaging=true in die gradle.properties-Datei einfügst. Während der Verwendung des neuen Paketerstellungstools ist die Aufgabe zipalignDebug nicht verfügbar. Sie können jedoch selbst eines erstellen, indem Sie die Methode createZipAlignTask(String taskName, File inputFile, File outputFile) aufrufen.
  • Für die APK-Signatur wird jetzt neben der herkömmlichen JAR-Signatur das APK Signature Scheme v2 verwendet. Alle Android-Plattformen akzeptieren die resultierenden APKs. Jede Änderung an diesen APKs nach der Signatur macht ihre V2-Signaturen ungültig und verhindert die Installation auf einem Gerät. Zum Deaktivieren dieses Features fügen Sie der Datei build.gradle auf Modulebene Folgendes hinzu:

    Groovig

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • Bei Multidex-Builds können Sie jetzt mithilfe von ProGuard-Regeln festlegen, welche Klassen Gradle in die DEX-Hauptdatei Ihrer App kompilieren soll. Da das Android-System beim Starten der Anwendung zuerst die DEX-Hauptdatei lädt, können Sie bestimmte Klassen beim Start priorisieren, indem Sie sie in die DEX-Hauptdatei kompilieren. Nachdem Sie eine ProGuard-Konfigurationsdatei speziell für Ihre DEX-Hauptdatei erstellt haben, übergeben Sie den Pfad der Konfigurationsdatei mit buildTypes.multiDexKeepProguard an Gradle. Die Verwendung dieser DSL unterscheidet sich von der Verwendung von buildTypes.proguardFiles, das allgemeine ProGuard-Regeln für Ihre App bereitstellt und keine Klassen für die DEX-Hauptdatei angibt.
  • Das Flag android:extractNativeLibs wird unterstützt, mit dem sich die Größe Ihrer App bei der Installation auf einem Gerät verringern kann. Wenn du dieses Flag im Element <application> deines App-Manifests auf false setzt, verpackt Gradle unkomprimierte und ausgerichtete Versionen deiner nativen Bibliotheken mit deinem APK. Dadurch wird verhindert, dass PackageManager deine nativen Bibliotheken während der Installation aus dem APK in das Dateisystem des Geräts kopiert. Außerdem werden Deltaaktualisierungen deiner App dadurch kleiner.
  • Du kannst jetzt versionNameSuffix und applicationIdSuffix für Produktaromen angeben. (Problem 59614)
Änderungen:
  • getDefaultProguardFile gibt jetzt die standardmäßigen ProGuard-Dateien zurück, die vom Android-Plug-in für Gradle bereitgestellt werden, und verwendet nicht mehr die Dateien im Android SDK.
  • Verbesserte Jack-Compilerleistung und verbesserte Funktionen:
    • Jack unterstützt jetzt die Jacoco-Testabdeckung, wenn testCoverageEnabled auf true gesetzt wird.
    • Verbesserte Unterstützung für Prozessoren für Anmerkungen. Annotationsprozessoren in Ihrem Klassenpfad, z. B. compile-Abhängigkeiten, werden automatisch auf den Build angewendet. Sie können auch einen Annotationsprozessor in Ihrem Build angeben und Argumente übergeben. Verwenden Sie dazu das DSL javaCompileOptions.annotationProcessorOptions {} in der Datei build.gradle auf Modulebene:

      Groovig

      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"))
            }
          }
        }
      }
          

      Wenn Sie bei der Kompilierung einen Annotationsprozessor anwenden möchten, ihn jedoch nicht in Ihr APK aufnehmen möchten, verwenden Sie den Abhängigkeitsbereich annotationProcessor:

      Groovig

      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
      }
          
    • Führen Sie folgenden Befehl über die Befehlszeile aus, um eine Liste der Parameter zu erhalten, die Sie festlegen können:

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

    • Wenn die Heap-Größe des Gradle-Daemons mindestens 1, 5 GB beträgt, wird Jack jetzt standardmäßig im selben Prozess wie Gradle ausgeführt. Fügen Sie der Datei gradle.properties Folgendes hinzu, um die Daemon-Heap-Größe anzupassen:

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