Android-Gradle-Plug-in 3.4.0 (April 2019)
Für diese Version des Android-Plug-ins sind folgende Voraussetzungen erforderlich:
| Mindestversion | Standardversion | 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 reduziert. Dies kann zu einer Verschlechterung der Build-Leistung 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. |
Dieses kleinere Update 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 Fehler korrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Blog „Release Updates“.
3.4.1 (Mai 2019)
Dieses kleinere Update unterstützt Android Studio 3.4.1 und enthält verschiedene Fehler korrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Blog „Release Updates“.
Neue Funktionen
-
Neue Konfigurationen für Lint-Check-Abhängigkeiten: Das Verhalten von
lintCheckshat sich geändert. Außerdem wurde eine neue Abhängigkeitskonfiguration,lintPublish, eingeführt, mit der Sie besser steuern können, welche Lint-Checks in Ihren Android-Bibliotheken verpackt werden.-
lintChecks: Dies ist eine vorhandene Konfiguration, die Sie für Lint-Checks verwenden sollten, die nur beim lokalen Erstellen Ihres Projekts ausgeführt werden sollen. Wenn Sie zuvor dielintChecksAbhängigkeitskonfiguration verwendet haben, um Lint Checks in die veröffentlichte AAR-Datei einzufügen, müssen Sie diese Abhängigkeiten migrieren und stattdessen die neuelintPublishKonfiguration verwenden, die unten beschrieben wird. -
lintPublish: Verwenden Sie diese neue Konfiguration in Bibliothek projekten für Lint-Checks, die in der veröffentlichten AAR-Datei enthalten sein sollen, wie unten gezeigt. Das bedeutet, dass Projekte, die Ihre Bibliothek verwenden, diese Lint-Checks ebenfalls anwenden.
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 verbessern. Wenn Sie eine Verschlechterung der Leistung im Zusammenhang mit diesen Aufgaben feststellen, melden Sie bitte einen Fehler.
-
Geändertes Verhalten
-
Warnung zur Einstellung des Android Instant Apps-Funktions-Plug-ins: Wenn Sie das
com.android.featurePlug-in weiterhin verwenden, um Ihre Instant App zu erstellen, wird im Android-Gradle-Plug-in 3.4.0 eine Warnung zur Einstellung angezeigt. Damit Sie Ihre Instant App auch in zukünftigen Versionen des Plug-ins erstellen können, migrieren Sie Ihre Instant App zum dynamischen Funktions-Plug-in. Damit können Sie sowohl die installierte Version als auch die Instant App über ein einzelnes Android App Bundle veröffentlichen. -
R8 standardmäßig aktiviert: R8 führt Desugaring, Shrinking, Verschleierung, Optimierung und Dexing in einem Schritt aus. Das führt zu spürbaren Verbesserungen 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 aktiviert, die das Plug-in 3.4.0 und höher verwenden.
Die folgende Abbildung zeigt eine allgemeine Übersicht ü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. Daher müssen Sie wahrscheinlich keine Maßnahmen ergreifen, 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 Shrinking und Optimierung Code entfernt wird, der von ProGuard möglicherweise nicht entfernt wurde. In diesem unwahrscheinlichen Fall müssen Sie möglicherweise zusätzliche Regeln hinzufügen, damit dieser Code in der Build-Ausgabe enthalten bleibt.
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 false Ihres App-
Moduls auf build.gradle setzen, 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.
-
ndkCompileist veraltet: Wenn Sie versuchen, Ihre nativen Bibliotheken mitndkBuildzu kompilieren, wird jetzt ein Build-Fehler ausgegeben. Verwenden Sie stattdessen CMake oder ndk-build, um Ihrem Projekt C- und C++-Code hinzuzufügen.
Bekannte Probleme
-
Die korrekte Verwendung eindeutiger Paketnamen wird derzeit nicht erzwungen wird aber in späteren Versionen des Plug-ins strenger gehandhabt. In Android Gradle-Plug-in Version 3.4.0 können Sie prüfen, ob Ihr Projekt akzeptable Paketnamen deklariert. Fügen Sie dazu die folgende Zeile in die Datei
gradle.propertiesein.android.uniquePackageNames = trueWeitere Informationen zum Festlegen eines Paketnamens über das Android-Gradle Plug-in finden Sie unter Anwendungs-ID festlegen.