Android-Gradle-Plug-in 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 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 jetzt in Gradle Links zu Ihren nativen Quellen erstellen und native Bibliotheken mit CMake oder ndk-build kompilieren. Nachdem Sie Ihre nativen Bibliotheken erstellt haben, packt Gradle sie in Ihr APK. Weitere Informationen zur Verwendung von CMake und ndk-build mit Gradle finden Sie unter C- und C++-Code zum Projekt 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ängt, automatisch herunterzuladen. Weitere Informationen finden Sie unter Fehlende Pakete mit Gradle automatisch herunterladen.
  • Mit einer neuen experimentellen Caching-Funktion kann Gradle die Build-Zeiten verkürzen, indem die vorab dexed-Versionen Ihrer Bibliotheken vorab dexed, gespeichert und wiederverwendet werden. Weitere Informationen zur Verwendung dieser experimentellen Funktion finden Sie im Leitfaden Build-Cache.
  • Die Build-Leistung wird durch die Einführung einer neuen Standard-Packaging-Pipeline verbessert, die das Zippen, Signieren und Zipalignen in einer Aufgabe übernimmt. Sie können zu den älteren Verpackungstools zurückkehren, indem Sie android.useOldPackaging=true in Ihre gradle.properties-Datei einfügen. Bei Verwendung des neuen Tools zur Paketerstellung ist die Aufgabe zipalignDebug nicht verfügbar. Sie können jedoch selbst eine erstellen, indem Sie die Methode createZipAlignTask(String taskName, File inputFile, File outputFile) aufrufen.
  • Für die APK-Signierung wird jetzt zusätzlich zur herkömmlichen JAR-Signierung das APK-Signaturschema v2 verwendet. Alle Android-Plattformen akzeptieren die resultierenden APKs. Jede Änderung an diesen APKs nach der Signierung 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, die allgemeine ProGuard-Regeln für Ihre App bereitstellt und keine Klassen für die primäre DEX-Datei angibt.
  • Unterstützung für das Flag android:extractNativeLibs wurde hinzugefügt, wodurch die Größe Ihrer App bei der Installation auf einem Gerät reduziert werden kann. Wenn Sie dieses Flag im Element <application> Ihres App-Manifests auf false setzen, packt 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 Dateien im Android SDK.
  • Verbesserte Leistung und Funktionen des Jack-Compilers:
    • Jack unterstützt jetzt die Jacoco-Testabdeckung, wenn testCoverageEnabled auf true gesetzt ist.
    • Verbesserte Unterstützung für Annotationsprozessoren. Annotationsprozessoren in Ihrem Klassenpfad, z. B. compile-Abhängigkeiten, werden automatisch auf Ihren Build angewendet. Sie können auch einen Annotationsprozessor in Ihrem Build angeben und Argumente über die javaCompileOptions.annotationProcessorOptions {}-DSL in Ihrer build.gradle-Datei auf Modulebene übergeben:

      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 Annotationsprozessor zur Kompilierzeit anwenden, ihn aber nicht in Ihr APK aufnehmen möchten, verwenden Sie den Abhängigkeitsbereich 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
      }
          
    • Eine Liste der Parameter, die Sie festlegen können, erhalten Sie, wenn Sie den folgenden Befehl über die Befehlszeile ausführen:

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

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

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