Android-Gradle-Plug-in 3.3.0 (Januar 2019)

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

Mindestversion Standardversio 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 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.

3.3.3 (Juli 2020)

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

Dieses kleinere Update unterstützt Android Studio 3.3.2 und enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste der wichtigsten Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Release Updates-Blog.

3.3.1 (Februar 2019)

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

Neue Funktionen

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

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

    Wenn der Laufzeit-Klassenpfad jedoch Bibliothek A Version 1.0 und der Kompilierungs-Klassenpfad Bibliothek A Version 2.0 enthält, wird die Abhängigkeit im Kompilierungs-Klassenpfad nicht auf Bibliothek A Version 1.0 herabgestuft und es wird ein Fehler ausgegeben. Weitere Informationen finden Sie unter Konflikte zwischen Classpaths beheben.

  • Verbesserte inkrementelle Java-Kompilierung bei Verwendung von Annotationsprozessoren:Mit diesem 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, die Kapt verwenden (die meisten reinen Kotlin-Projekte und hybriden Kotlin-Java-Projekte): Die inkrementelle Java-Kompilierung ist aktiviert, auch wenn Sie Data Binding oder das Retro-Lambda-Plug-in verwenden. Die Verarbeitung von Annotationen durch die Kapt-Aufgabe ist noch nicht inkrementell.

    • Für Projekte, die Kapt nicht verwenden (reine Java-Projekte): Wenn die von Ihnen verwendeten Annotationsprozessoren alle inkrementelle Annotationsverarbeitung unterstützen, ist die inkrementelle Java-Kompilierung standardmäßig aktiviert. Wenn Sie die Einführung des inkrementellen Annotationsprozessors beobachten möchten, sehen Sie sich Gradle-Problem 5277 an.

      Wenn jedoch ein oder mehrere Anmerkungsprozessoren keine inkrementellen Builds unterstützen, wird die inkrementelle Java-Kompilierung nicht aktiviert. Stattdessen können Sie das folgende Flag in Ihre gradle.properties-Datei 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 Debugging-Informationen bei Verwendung einer veralteten API:Wenn das Plug-in erkennt, dass Sie eine API verwenden, die nicht mehr unterstützt wird, kann es jetzt detailliertere Informationen liefern, um Ihnen bei der Ermittlung der Verwendung dieser API zu helfen. Damit die zusätzlichen Informationen angezeigt werden, müssen Sie Folgendes in die Datei gradle.properties Ihres Projekts einfügen:

              android.debug.obsoleteApi=true
            

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

  • Sie können Instrumentierungstests für Funktionsmodule über die Befehlszeile ausführen.

Geändertes Verhalten

  • Lazy Task Configuration:Das Plug-in verwendet jetzt die neue API zum Erstellen von Aufgaben in 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-Task-Diagramm befinden). Wenn Sie beispielsweise mehrere Build-Varianten haben, z. B. die Build-Varianten „release“ und „debug“, und Sie die „debug“-Version Ihrer App erstellen, werden durch das Plug-in Initialisierungs- und Konfigurationsaufgaben für die „release“-Version Ihrer App vermieden.

    Beim Aufrufen bestimmter älterer Methoden in der Variants API, z. B. variant.getJavaCompile(), kann es weiterhin erforderlich sein, Aufgaben zu konfigurieren. Damit Ihr Build für die Lazy-Task-Konfiguration optimiert ist, rufen Sie neue Methoden auf, die stattdessen ein TaskProvider-Objekt zurückgeben, z. B. variant.getJavaCompileProvider().

    Wenn Sie benutzerdefinierte Build-Aufgaben ausführen, erfahren Sie hier, wie Sie die neue API zum Erstellen von Aufgaben in Gradle anpassen.

  • Wenn Sie useProguard false für einen bestimmten Build-Typ 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 Blog für Android-Entwickler.

  • 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 eine JAR-Datei mit der kompilierten R-Klasse Ihrer App, ohne zuerst R.java-Zwischenklassen zu erstellen. Diese Optimierung kann die Build-Leistung für Projekte mit vielen Bibliotheksunterprojekten und ‑abhängigkeiten erheblich verbessern und die Indexierungsgeschwindigkeit in Android Studio steigern.

  • Wenn Sie ein Android App Bundle erstellen, 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, wodurch die Größe Ihrer App auf dem Datenträger reduziert wird. Wenn Sie diese Optimierung lieber 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 mit einer einzelnen Variante: Das Synchronisieren Ihres Projekts mit Ihrer Build-Konfiguration ist ein wichtiger Schritt, damit Android Studio die Struktur Ihres Projekts nachvollziehen kann. Bei großen Projekten kann dieser Vorgang jedoch zeitaufwendig sein. Wenn in Ihrem Projekt mehrere Build-Varianten verwendet werden, können Sie die Projektsynchronisierung optimieren, indem Sie sie auf die aktuell ausgewählte Variante beschränken.

    Sie benötigen Android Studio 3.3 oder höher mit dem Android Gradle-Plug-in 3.3.0 oder höher, um diese Optimierung zu aktivieren. Wenn Sie diese Anforderungen erfüllen, werden Sie in 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 (unter Android Studio auf einem Mac: Android Studio > Einstellungen > Experimentell > Gradle) und aktivieren Sie das Kästchen Nur die aktive Variante synchronisieren.

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

  • Automatisches Herunterladen fehlender SDK-Pakete: Diese Funktion wurde erweitert und unterstützt jetzt auch das NDK. Weitere Informationen finden Sie unter Fehlende Pakete mit Gradle automatisch herunterladen.

Fehlerkorrekturen

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

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