Android Gradle Plugin 2.2.0 (September 2016)

Abhängigkeiten:
Mindestversion Standardversio Hinweise
Gradle 2.14.1 2.14.1 Weitere Informationen finden Sie unter Gradle aktualisieren.
SDK-Build-Tools 23.0.2 23.0.2 Installieren oder konfigurieren Sie die SDK-Build-Tools.
Neu:
  • Verwendet Gradle 2.14.1, das Leistungsverbesserungen und neue Funktionen enthält. Außerdem wird eine Sicherheitslücke geschlossen, die eine lokale Berechtigungseskalierung 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 herstellen und native Bibliotheken mit CMake oder ndk-build kompilieren. Nachdem Sie Ihre nativen Bibliotheken erstellt haben, verpackt Gradle sie in Ihrem APK. Weitere Informationen zur Verwendung von CMake und ndk-build mit Gradle finden Sie im Hilfeartikel C- und C++-Code in Ihr Projekt einfügen.
  • Wenn Sie einen Build über die Befehlszeile ausführen, versucht Gradle jetzt, alle fehlenden SDK-Komponenten oder Updates automatisch herunterzuladen, von denen Ihr Projekt abhängt. Weitere Informationen finden Sie unter Fehlende Pakete mit Gradle automatisch herunterladen.
  • Mit einer neuen experimentellen Caching-Funktion kann Gradle die Build-Zeiten beschleunigen, indem die dex-optimierten Versionen Ihrer Bibliotheken vorab dex-optimiert, gespeichert und wiederverwendet werden. Weitere Informationen zur Verwendung dieser experimentellen Funktion finden Sie im Leitfaden Cache erstellen.
  • Die Build-Leistung wurde durch die Einführung einer neuen Standard-Packerpipeline verbessert, die Zippen, Signieren und Zipaligning in einer einzigen Aufgabe verarbeitet. Sie können zu den älteren Tools zur Paketierung zurückkehren, indem Sie Ihrer gradle.properties-Datei android.useOldPackaging=true hinzufügen. Beim Verwenden des neuen Tools zur Paketierung ist die Aufgabe zipalignDebug nicht verfügbar. Sie können jedoch eine selbst erstellen, indem Sie die Methode createZipAlignTask(String taskName, File inputFile, File outputFile) aufrufen.
  • Für die APK-Signatur wird jetzt zusätzlich zur traditionellen JAR-Signatur das APK-Signaturschema v2 verwendet. Die resultierenden APKs werden von allen Android-Plattformen akzeptiert. Jede Änderung an diesen APKs nach der Signatur macht ihre V2-Signaturen ungültig und verhindert die Installation auf einem Gerät. Wenn Sie diese Funktion deaktivieren möchten, fügen Sie der Datei build.gradle auf Modulebene Folgendes hinzu:

    Groovy

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • Bei Multidex-Builds können Sie jetzt ProGuard-Regeln verwenden, um festzulegen, welche Klassen Gradle in die main-DEX-Datei Ihrer App kompilieren soll. Da das Android-System beim Starten Ihrer App zuerst die Haupt-DEX-Datei lädt, können Sie bestimmte Klassen beim Start priorisieren, indem Sie sie in die Haupt-DEX-Datei kompilieren. Nachdem Sie eine ProGuard-Konfigurationsdatei speziell für Ihre Haupt-DEX-Datei 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 enthält und keine Klassen für die Haupt-DEX-Datei angibt.
  • Unterstützung für das Flag android:extractNativeLibs hinzugefügt, mit dem die Größe Ihrer App bei der Installation auf einem Gerät verringert werden kann. Wenn Sie dieses Flag im Element <application> Ihres App-Manifests auf false festlegen, verpackt Gradle unkomprimierte und ausgerichtete Versionen Ihrer nativen Bibliotheken mit Ihrem APK. Dadurch wird verhindert, dass PackageManager Ihre nativen Bibliotheken während der Installation aus dem APK in das Dateisystem des Geräts kopiert. Außerdem werden Delta-Updates Ihrer App dadurch kleiner.
  • Sie können jetzt versionNameSuffix und applicationIdSuffix für Produktvarianten angeben. (Problem 59614)
Änderungen:
  • getDefaultProguardFile gibt jetzt die Standard-ProGuard-Dateien zurück, die vom Android-Plug-in für Gradle bereitgestellt werden, und verwendet nicht mehr die im Android SDK enthaltenen Dateien.
  • Verbesserte Leistung und Funktionen des Jack-Compilers:
    • Jack unterstützt jetzt die Jacoco-Testabdeckung, wenn testCoverageEnabled auf true gesetzt wird.
    • Verbesserte Unterstützung für Anmerkungs-Prozessoren. Anmerkungs-Prozessoren in Ihrem Klassenpfad, z. B. compile-Abhängigkeiten, werden automatisch auf Ihren Build angewendet. Sie können auch einen Anmerkungs-Prozessor in Ihrem Build angeben und Argumente übergeben, indem Sie die javaCompileOptions.annotationProcessorOptions {}-DSL in Ihrer build.gradle-Datei auf Modulebene verwenden:

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

      Wenn Sie einen Anmerkungs-Prozessor zur Kompilierungszeit anwenden, ihn aber nicht in Ihr APK aufnehmen möchten, verwenden Sie den annotationProcessor-Abhängigkeitsbereich:

      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
      }
          
    • Eine Liste der Parameter, die Sie festlegen können, erhalten Sie über die Befehlszeile mit dem folgenden Befehl:

      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. Wenn Sie die Größe des Daemon-Haufens anpassen möchten, fügen Sie der Datei gradle.properties Folgendes hinzu:

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