Android-Gradle-Plug-in 3.4.0 (April 2019)
Für diese Version des Android-Plug-ins ist Folgendes erforderlich:
Mindestversion | Standardversio | Hinweise | |
---|---|---|---|
Gradle | 5.1.1 | 5.1.1 | Weitere Informationen finden Sie unter Gradle aktualisieren. Bei Verwendung von Gradle 5.0 und höher wird die standardmäßige Heap-Größe des Gradle-Daemons von 1 GB auf 512 MB verringert. Dies kann zu einer Leistungseinbuße beim Build führen. Wenn Sie diese Standardeinstellung überschreiben möchten, geben Sie die Heap-Größe des Gradle-Daemons in der Datei „gradle.properties“ Ihres Projekts an. |
SDK-Build-Tools | 28.0.3 | 28.0.3 | Installieren oder Konfigurieren Sie die SDK-Build-Tools. |
Diese kleinere Aktualisierung unterstützt die Kompatibilität mit neuen Standardeinstellungen und Funktionen für die Paketsichtbarkeit in Android 11.
Weitere Informationen finden Sie in den Versionshinweisen zu Version 4.0.1.
3.4.2 (Juli 2019)
Dieses kleinere Update unterstützt Android Studio 3.4.2 und enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Release Updates-Blog.
3.4.1 (Mai 2019)
Dieses kleinere Update unterstützt Android Studio 3.4.1 und enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Release Updates-Blog.
Neue Funktionen
-
Neue Abhängigkeitskonfigurationen für Lint-Prüfungen:Das Verhalten von
lintChecks
hat sich geändert und eine neue Abhängigkeitskonfiguration,lintPublish
, wurde eingeführt, um Ihnen mehr Kontrolle darüber zu geben, welche Lint-Prüfungen in Ihren Android-Bibliotheken enthalten sind.-
lintChecks
: Dies ist eine vorhandene Konfiguration, die Sie für Lint-Prüfungen verwenden sollten, die nur beim lokalen Erstellen Ihres Projekts ausgeführt werden sollen. Wenn Sie zuvor die AbhängigkeitskonfigurationlintChecks
verwendet haben, um Lint-Prüfungen in die veröffentlichte AAR-Datei einzufügen, müssen Sie diese Abhängigkeiten migrieren, um stattdessen die neuelintPublish
-Konfiguration zu verwenden, die unten beschrieben wird. -
lintPublish
: Verwenden Sie diese neue Konfiguration in Bibliotheksprojekten für Lint-Prüfungen, die Sie in die veröffentlichte AAR-Datei aufnehmen möchten, wie unten gezeigt. Das bedeutet, dass in Projekten, in denen Ihre Bibliothek verwendet wird, auch diese Lint-Prüfungen angewendet werden.
Im folgenden Codebeispiel werden beide Abhängigkeitskonfigurationen in einem lokalen Android-Bibliotheksprojekt verwendet.
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks project(':lint') // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish project(':lintpublish') }
dependencies { // Executes lint checks from the ':lint' project at build time. lintChecks(project(":lint")) // Packages lint checks from the ':lintpublish' in the published AAR. lintPublish(project(":lintpublish")) }
-
Im Allgemeinen sollte sich die Build-Geschwindigkeit bei Verpackungs- und Signierungsaufgaben insgesamt verbessern. Wenn Sie eine Leistungsverschlechterung im Zusammenhang mit diesen Aufgaben feststellen, melden Sie bitte einen Fehler.
-
Geändertes Verhalten
-
Warnung zur Einstellung des Funktions-Plug-ins für Android-Instant-Apps:Wenn Sie zum Erstellen Ihrer Instant-App noch das
com.android.feature
-Plug-in verwenden, wird im Android-Gradle-Plug-in 3.4.0 eine Warnung zur Einstellung angezeigt. Damit Sie Ihre Instant-App auch mit zukünftigen Versionen des Plug-ins erstellen können, sollten Sie sie auf die Verwendung des Plug-ins für dynamische Funktionen umstellen. Damit können Sie sowohl die installierte Version als auch die Instant-Version Ihrer App über ein einzelnes Android App Bundle veröffentlichen. -
R8 standardmäßig aktiviert:R8 integriert Desugaring, Shrinking, Verschleierung, Optimierung und Dexing in einem Schritt. Das führt zu einer spürbaren Verbesserung der Build-Leistung. R8 wurde im Android-Gradle-Plug-in 3.3.0 eingeführt und ist jetzt standardmäßig für App- und Android-Bibliotheksprojekte mit Plug-in 3.4.0 und höher aktiviert.
Das Bild unten bietet einen allgemeinen Überblick über den Kompilierungsprozess vor der Einführung von R8.

Mit R8 werden Desugaring, Shrinking, Verschleierung, Optimierung und Dexing (D8) jetzt in einem Schritt ausgeführt, wie unten dargestellt.

R8 ist so konzipiert, dass es mit Ihren vorhandenen ProGuard-Regeln funktioniert. Sie müssen also wahrscheinlich nichts weiter tun, um von R8 zu profitieren. Da es sich jedoch um eine andere Technologie als ProGuard handelt, die speziell für Android-Projekte entwickelt wurde, kann es sein, dass durch das Verkleinern und Optimieren Code entfernt wird, der von ProGuard möglicherweise nicht entfernt worden wäre. In dieser unwahrscheinlichen Situation müssen Sie möglicherweise zusätzliche Regeln hinzufügen, damit der Code in der Build-Ausgabe enthalten ist.
Wenn Sie Probleme mit R8 haben, lesen Sie die Häufig gestellten Fragen zur R8-Kompatibilität, um zu prüfen, ob es eine Lösung für Ihr Problem gibt. Wenn keine Lösung dokumentiert ist, melden Sie bitte einen Fehler.
Sie können R8 deaktivieren, indem Sie eine der folgenden Zeilen in die Datei gradle.properties
Ihres Projekts einfügen:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
Hinweis:Wenn Sie für einen bestimmten Build-Typ useProguard
in der Datei build.gradle
Ihres App-Moduls auf false
festlegen, verwendet das Android-Gradle-Plug-in R8, um den Code Ihrer App für diesen Build-Typ zu verkleinern. Das gilt unabhängig davon, ob Sie R8 in der Datei gradle.properties
Ihres Projekts deaktivieren.
-
ndkCompile
ist veraltet:Wenn Sie versuchen, Ihre nativen Bibliotheken mitndkBuild
zu kompilieren, wird jetzt ein Build-Fehler ausgegeben. Verwenden Sie stattdessen entweder CMake oder ndk-build, um C- und C++-Code zu Ihrem Projekt hinzuzufügen.
Bekannte Probleme
-
Die korrekte Verwendung eindeutiger Paketnamen wird derzeit nicht erzwungen, wird aber in späteren Versionen des Plug-ins strenger gehandhabt. Mit dem Android-Gradle-Plug-in 3.4.0 können Sie prüfen lassen, ob in Ihrem Projekt zulässige Paketnamen deklariert sind. Fügen Sie dazu die folgende Zeile in Ihre
gradle.properties
-Datei ein.android.uniquePackageNames = true
Weitere Informationen zum Festlegen eines Paketnamens über das Android-Gradle-Plug-in finden Sie unter Anwendungs-ID festlegen.