Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Android-Gradle-Plug-in 2.2.0 (September 2016)
- Abhängigkeiten:
- 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 dexierten Versionen Ihrer Bibliotheken vorab dexiert, 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 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 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
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-08-27 (UTC).
[null,null,["Zuletzt aktualisiert: 2025-08-27 (UTC)."],[],[],null,["\u003cbr /\u003e\n\nAndroid Gradle Plugin 2.2.0 (September 2016)\n\nDependencies:\nNew:\n:\n - Uses Gradle 2.14.1, which includes performance improvements and new features, and fixes a security vulnerability that allows local privilege escalation when using the Gradle daemon. For more details, see the [Gradle release notes](https://docs.gradle.org/2.14.1/release-notes).\n - Using the [`externalNativeBuild {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ExternalNativeBuild.html) DSL, Gradle now lets you link to your native sources and compile native libraries using CMake or ndk-build. After building your native libraries, Gradle packages them into your APK. To learn more about using CMake and ndk-build with Gradle, read [Add C and C++ Code to Your\n Project](/studio/projects/add-native-code).\n - When you [run a\n build from the command line](/studio/build/building-cmdline), Gradle now attempts to auto-download any missing SDK components or updates that your project depends on. To learn more, read [Auto-download\n missing packages with Gradle](/studio/intro/update#download-with-gradle).\n - A new experimental caching feature lets Gradle speed up build times by pre-dexing, storing, and reusing the pre-dexed versions of your libraries. To learn more about using this experimental feature, read the [Build\n Cache](/studio/build/build-cache) guide.\n - Improves build performance by adopting a new default packaging pipeline which handles zipping, signing, and [zipaligning](/studio/command-line/zipalign) in one task. You can revert to using the older packaging tools by adding `android.useOldPackaging=true` to your `gradle.properties` file. While using the new packaging tool, the `zipalignDebug` task is not available. However, you can create one yourself by calling the `createZipAlignTask(String taskName, File inputFile, File\n outputFile)` method.\n - APK signing now uses [APK Signature Scheme\n v2](/about/versions/nougat/android-7.0#apk_signature_v2) in addition to traditional JAR signing. All Android platforms accept the resulting APKs. Any modification to these APKs after signing invalidates their v2 signatures and prevents installation on a device. To disable this feature, add the following to your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n signingConfigs {\n config {\n ...\n v2SigningEnabled false\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n signingConfigs {\n create(\"config\") {\n ...\n v2SigningEnabled = false\n }\n }\n }\n \n ```\n - For multidex builds, you can now use ProGuard rules to determine which classes Gradle should compile into your app's *main* DEX file. Because the Android system loads the main DEX file first when starting your app, you can prioritize certain classes at startup by compiling them into the main DEX file. After you create a ProGuard configuration file specifically for your main DEX file, pass the configuration file's path to Gradle using [buildTypes.multiDexKeepProguard](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:multiDexKeepProguard). Using this DSL is different from using [`buildTypes.proguardFiles`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:proguardFiles(java.lang.Object[])), which provides general ProGuard rules for your app and does not specify classes for the main DEX file.\n - Adds support for the `android:extractNativeLibs` flag, which can reduce the size of your app when you install it on a device. When you set this flag to `false` in the [`\u003capplication\u003e`](/guide/topics/manifest/application-element) element of your app manifest, Gradle packages uncompressed and aligned versions of your native libraries with your APK. This prevents [`PackageManager`](/reference/android/content/pm/PackageManager) from copying out your native libraries from the APK to the device's file system during installation and has the added benefit of making delta updates of your app smaller.\n - You can now specify [`versionNameSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:versionNameSuffix) and [`applicationIdSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:applicationIdSuffix) for product flavors. ([Issue 59614](http://b.android.com/59614))\n\n\nChanges:\n:\n - `getDefaultProguardFile` now returns the default ProGuard files that Android plugin for Gradle provides and no longer uses the ones in the Android SDK.\n - Improved Jack compiler performance and features:\n - Jack now supports Jacoco test coverage when setting [testCoverageEnabled](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:testCoverageEnabled) to `true`.\n - Improved support for annotation processors. Annotation processors on your classpath, such as any `compile` dependencies, are automatically applied to your build. You can also specify an annotation processor in your build and pass arguments by using the [`javaCompileOptions.annotationProcessorOptions {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.AnnotationProcessorOptions.html) DSL in your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className 'com.example.MyProcessor'\n // Arguments are optional.\n arguments = [ foo : 'bar' ]\n }\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className = \"com.example.MyProcessor\"\n // Arguments are optional.\n arguments(mapOf(foo to \"bar\"))\n }\n }\n }\n }\n \n ```\n\n\n If you want to apply an annotation processor at compile\n time but not include it in your APK, use the\n `annotationProcessor` dependency scope: \n\n Groovy \n\n ```groovy\n dependencies {\n compile 'com.google.dagger:dagger:2.0'\n annotationProcessor 'com.google.dagger:dagger-compiler:2.0'\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n dependencies {\n implementation(\"com.google.dagger:dagger:2.0\")\n annotationProcessor(\"com.google.dagger:dagger-compiler:2.0\")\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n - For a list of parameters you can set, run the following from the command line: \n\n ```\n java -jar /build-tools/jack.jar --help-properties\n ```\n - By default, if the Gradle daemon's heap size is at least 1.5 GB, Jack now runs in the same process as Gradle. To adjust the daemon heap size, add the following to your `gradle.properties` file:\n\n \u003cbr /\u003e\n\n ```\n # This sets the daemon heap size to 1.5GB.\n org.gradle.jvmargs=-Xmx1536M\n ```\n\n \u003cbr /\u003e\n\n\n\u003cbr /\u003e"]]