Android Gradle-Plug-in 2.2.0 (September 2016)
- Abhängigkeiten:
-
- Gradle 2.14.1 oder höher.
- Build Tools 23.0.2 oder höher.
- 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 diegradle.properties
-Datei einfügst. Während der Verwendung des neuen Paketerstellungstools ist die AufgabezipalignDebug
nicht verfügbar. Sie können jedoch selbst eines erstellen, indem Sie die MethodecreateZipAlignTask(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 vonbuildTypes.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 auffalse
setzt, verpackt Gradle unkomprimierte und ausgerichtete Versionen deiner nativen Bibliotheken mit deinem APK. Dadurch wird verhindert, dassPackageManager
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
undapplicationIdSuffix
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
auftrue
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 DSLjavaCompileOptions.annotationProcessorOptions {}
in der Dateibuild.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
- Jack unterstützt jetzt die Jacoco-Testabdeckung, wenn
- 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
-