Android Gradle-Plug-in 3.3.0 (Januar 2019)

Für diese Version des Android-Plug-ins ist Folgendes erforderlich:

Mindestversion Standardversion Hinweise
Gradle 4.10.1 4.10.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 Leistungsminderung 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.

3.3.3 (Juli 2020)

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.3.2 (März 2019)

Dieses kleinere Update unterstützt Android Studio 3.3.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.3.1 (Februar 2019)

Dieses kleinere Update unterstützt Android Studio 3.3.1 und enthält verschiedene Fehler korrekturen und Leistungsverbesserungen.

Neue Funktionen

  • Verbesserte Classpath-Synchronisierung: Beim Auflösen von Abhängigkeiten in den Classpaths für Laufzeit und Kompilierung versucht das Android Gradle-Plug-in, bestimmte nachgelagerte Versionskonflikte für Abhängigkeiten zu beheben, die in mehreren Classpaths vorkommen.

    Wenn der Laufzeit-Classpath beispielsweise Bibliothek A Version 2.0 und der Kompilierungs-Classpath Bibliothek A Version 1.0 enthält, aktualisiert das Plug-in die Abhängigkeit im Kompilierungs-Classpath automatisch auf Bibliothek A Version 2.0, um Fehler zu vermeiden.

    Wenn der Laufzeit-Classpath jedoch Bibliothek A Version 1.0 und der Kompilierungs-Classpath Bibliothek A Version 2.0 enthält, führt das Plug-in kein Downgrade der Abhängigkeit im Kompilierungs-Classpath auf Bibliothek A Version 1.0 durch und es wird ein Fehler angezeigt. Weitere Informationen finden Sie unter Konflikte zwischen Classpaths beheben.

  • Verbesserte inkrementelle Java-Kompilierung bei Verwendung von Annotation prozessoren: Durch dieses Update wird die Build-Zeit verkürzt, da die Unterstützung für die inkrementelle Java Kompilierung bei Verwendung von Annotationsprozessoren verbessert wurde.

    Hinweis: Diese Funktion ist mit Gradle 4.10.1 und höher kompatibel, mit Ausnahme von Gradle 5.1 aufgrund von Gradle Problem 8194.

    • Für Projekte mit Kapt (die meisten reinen Kotlin-Projekte und hybriden Kotlin-Java-Projekte): Die inkrementelle Java-Kompilierung ist aktiviert, auch wenn Sie die Datenbindung oder das Retro-Lambda-Plug-in verwenden. Die Annotationsverarbeitung durch die Kapt-Aufgabe ist noch nicht inkrementell.

    • Für Projekte ohne Kapt (reine Java-Projekte): Wenn alle von Ihnen verwendeten Annotationsprozessoren die inkrementelle Annotationsverarbeitung unterstützen, ist die inkrementelle Java-Kompilierung standardmäßig aktiviert. Informationen zur Einführung der inkrementellen Annotation Processor-Adoption finden Sie unter Gradle-Problem 5277.

      Wenn jedoch ein oder mehrere Annotationsprozessoren keine inkrementellen Builds unterstützen, ist die inkrementelle Java-Kompilierung nicht aktiviert. Stattdessen können Sie das folgende Flag in die Datei gradle.properties einfügen:

      android.enableSeparateAnnotationProcessing=true
                  

      Wenn Sie dieses Flag einfügen, führt das Android Gradle-Plug-in die Annotationsprozessoren in einer separaten Aufgabe aus und ermöglicht die inkrementelle Ausführung der Java-Kompilierungsaufgabe.

  • Bessere Debug-Informationen bei Verwendung einer veralteten API:Wenn das Plug-in feststellt, dass Sie eine nicht mehr unterstützte API verwenden, kann es jetzt detailliertere Informationen liefern, mit denen Sie ermitteln können, wo diese API verwendet wird. Wenn Sie die zusätzlichen Informationen sehen möchten, müssen Sie Folgendes in die Datei Ihres Projekts gradle.properties einfügen:

              android.debug.obsoleteApi=true
            

    Sie können das Flag auch aktivieren, indem Sie -Pandroid.debug.obsoleteApi=true in der Befehlszeile übergeben.

  • Sie können Instrumentierungstests für Feature-Module über die Befehlszeile ausführen.

Geändertes Verhalten

  • Lazy Task Configuration: Das Plug-in verwendet jetzt die neue API zur Aufgabenerstellung von Gradle, um die Initialisierung und Konfiguration von Aufgaben zu vermeiden, die für den aktuellen Build nicht erforderlich sind (oder Aufgaben, die sich nicht im Ausführungs-Aufgabendiagramm befinden). Wenn Sie beispielsweise mehrere Build-Varianten haben, z. B. „Release“- und „Debug“-Build Varianten, und Sie die „Debug“-Version Ihrer App erstellen, vermeidet das Plug-in die Initialisierung und Konfiguration von Aufgaben für die „Release“-Version Ihrer App.

    Durch den Aufruf bestimmter älterer Methoden in der Variants API, z. B. variant.getJavaCompile(), kann die Aufgabenkonfiguration weiterhin erzwungen werden. Um sicherzustellen dass Ihr Build für die Lazy Task Configuration optimiert ist, rufen Sie stattdessen neue Methoden auf, die ein TaskProvider Objekt zurückgeben, z. B. variant.getJavaCompileProvider().

    Wenn Sie benutzerdefinierte Build-Aufgaben ausführen, erfahren Sie hier, wie Sie sich an die neue API zur Aufgabenerstellung von Gradle anpassen.

  • Wenn Sie für einen bestimmten Build-Typ useProguard false festlegen, verwendet das Plug-in jetzt R8 anstelle von ProGuard, um den Code und die Ressourcen Ihrer App zu verkleinern und zu verschleiern. Weitere Informationen zu R8 finden Sie in diesem Blogpost im Android Developers Blog.

  • Schnellere R-Klassengenerierung für Bibliotheksprojekte: Bisher hat das Android Gradle-Plug-in für jede Abhängigkeit Ihres Projekts eine R.java Datei generiert und diese R-Klassen dann zusammen mit den anderen Klassen Ihrer App kompiliert. Das Plug-in generiert jetzt direkt ein JAR mit der kompilierten R-Klasse Ihrer App ohne zuerst Zwischenklassen R.java zu erstellen. Diese Optimierung kann die Build-Leistung für Projekte mit vielen Bibliotheks-Unterprojekten und -Abhängigkeiten erheblich verbessern und die Indexierungsgeschwindigkeit in Android Studio erhöhen.

  • Beim Erstellen eines Android App Bundle enthalten APKs, die aus diesem App Bundle generiert werden und auf Android 6.0 (API-Level 23) oder höher ausgerichtet sind, jetzt standardmäßig unkomprimierte Versionen Ihrer nativen Bibliotheken. Durch diese Optimierung muss das Gerät keine Kopie der Bibliothek erstellen und die Größe Ihrer App auf dem Datenträger wird reduziert. Wenn Sie diese Optimierung deaktivieren möchten, fügen Sie der Datei gradle.properties Folgendes hinzu:

    android.bundle.enableUncompressedNativeLibs = false
            
  • Das Plug-in erzwingt Mindestversionen einiger Drittanbieter-Plug-ins.

  • Projektsynchronisierung für eine einzelne Variante: Die Synchronisierung Ihres Projekts mit Ihrer Build-Konfiguration ist ein wichtiger Schritt, damit Android Studio die Struktur Ihres Projekts versteht. Bei großen Projekten kann dieser Vorgang jedoch zeitaufwendig sein. Wenn Ihr Projekt mehrere Build Varianten verwendet, können Sie die Projektsynchronisierungen jetzt optimieren, indem Sie sie auf die aktuell ausgewählte Variante beschränken.

    Sie müssen Android Studio 3.3 oder höher mit Android Gradle-Plug-in 3.3.0 oder höher verwenden, um diese Optimierung zu aktivieren. Wenn Sie diese Anforderungen erfüllen, werden Sie von der IDE aufgefordert, diese Optimierung zu aktivieren, wenn Sie Ihr Projekt synchronisieren. Die Optimierung ist auch für neue Projekte standardmäßig aktiviert.

    Wenn Sie diese Optimierung manuell aktivieren möchten, klicken Sie auf Datei > Einstellungen > Experimentell > Gradle (Android Studio > Einstellungen > Experimentell > Gradle auf einem Mac) und wählen Sie das Kästchen Nur die aktive Variante synchronisieren aus.

    Hinweis: Diese Optimierung unterstützt Projekte, die Java- und C++-Sprachen umfassen, vollständig und bietet eine gewisse Unterstützung für Kotlin. Wenn Sie die Optimierung für Projekte mit Kotlin-Inhalten aktivieren, wird bei der Gradle-Synchronisierung intern auf vollständige Varianten zurückgegriffen.

  • Automatischer Download fehlender SDK-Pakete: Diese Funktion wurde um die Unterstützung von NDK erweitert. Weitere Informationen finden Sie unter Fehlende Pakete automatisch mit Gradle herunterladen.

Fehlerkorrekturen

  • Im Android Gradle-Plug-in 3.3.0 wurden die folgenden Probleme behoben:

    • Der Build-Prozess ruft android.support.v8.renderscript.RenderScript anstelle der AndroidX-Version auf, obwohl Jetifier aktiviert ist.
    • Konflikte aufgrund von androidx-rs.jar, einschließlich statisch gebündelter annotation.AnyRes
    • Bei Verwendung von RenderScript müssen Sie die Version der Build-Tools nicht mehr manuell in den Dateien build.gradle festlegen.