Android Gradle Plugin 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 Standardgröße des Gradle-Daemon-Speicher-Heaps von 1 GB auf 512 MB reduziert. Dies kann zu einer Verschlechterung der Buildleistung führen. Wenn Sie diese Standardeinstellung überschreiben möchten, geben Sie die Größe des Gradle-Daemon-Hoops 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 Minor-Update unterstützt die Kompatibilität mit neuen Standardeinstellungen und Funktionen für die Paketsichtbarkeit unter Android 11.

Weitere Informationen finden Sie in den Versionshinweisen zur Version 4.0.1.

3.3.2 (März 2019)

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

3.3.1 (Februar 2019)

Dieses Minor-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 Ihren Laufzeit- und Kompilierungszeit-Classpaths versucht das Android Gradle-Plug-in, bestimmte Downstream-Versionskonflikte für Abhängigkeiten zu beheben, die in mehreren Classpaths auftreten.

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

    Wenn der Laufzeit-Classpath jedoch Bibliothek A Version 1.0 und der Compile-Classpath Bibliothek A Version 2.0 enthält, wird die Abhängigkeit im Compile-Classpath nicht auf Bibliothek A Version 1.0 herabgestuft. In diesem Fall wird ein Fehler ausgegeben. Weitere Informationen finden Sie unter Konflikte zwischen Klassenpfaden beheben.

  • Verbesserte inkrementelle Java-Kompilierung bei Verwendung von Anmerkungs-Prozessoren: Durch diese Aktualisierung wird die Buildzeit verkürzt, da die Unterstützung für die inkrementelle Java-Kompilierung bei Verwendung von Anmerkungs-Prozessoren verbessert wird.

    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 Kotlin-Java-Hybridprojekte): Die inkrementelle Java-Kompilierung ist aktiviert, auch wenn Sie Data Binding oder das Retro-Lambda-Plug-in verwenden. Die Anmerkungsverarbeitung durch die Kapt-Aufgabe ist noch nicht inkrementell.

    • Für Projekte ohne Kapt (nur Java-Projekte): Wenn alle von Ihnen verwendeten Anmerkungs-Prozessoren die inkrementelle Anmerkungsverarbeitung unterstützen, ist die inkrementelle Java-Kompilierung standardmäßig aktiviert. Informationen zur Einführung des schrittweisen Annotationseintrags finden Sie unter Gradle-Problem 5277.

      Wenn jedoch mindestens einer der Anmerkungs-Prozessoren keine inkrementellen Builds unterstützt, wird die inkrementelle Java-Kompilierung nicht aktiviert. Stattdessen können Sie das folgende Flag in die gradle.properties-Datei einfügen:

      android.enableSeparateAnnotationProcessing=true
                  

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

  • Verbesserte Informationen zur Fehlerbehebung bei Verwendung einer veralteten API:Wenn das Plug-in erkennt, dass Sie eine nicht mehr unterstützte API verwenden, können Sie jetzt detailliertere Informationen erhalten, um zu ermitteln, wo diese API verwendet wird. Damit Sie die zusätzlichen Informationen sehen können, müssen Sie Folgendes in die Datei gradle.properties Ihres Projekts aufnehmen:

              android.debug.obsoleteApi=true
            

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

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

Geändertes Verhalten

  • Lazy-Aufgabenkonfiguration:Das Plug-in verwendet jetzt die neue API zum Erstellen von Aufgaben in Gradle, um Aufgaben zu vermeiden, die nicht zum Abschluss des aktuellen Builds erforderlich sind (oder Aufgaben, die nicht im Ausführungsaufgabengraphen enthalten sind). Wenn Sie beispielsweise mehrere Buildvarianten wie „Release“ und „Debug“ haben und die „Debug“-Version Ihrer App erstellen, wird durch das Plug-in verhindert, dass Aufgaben für die „Release“-Version Ihrer App initialisiert und konfiguriert werden.

    Wenn Sie bestimmte ältere Methoden in der Variants API aufrufen, z. B. variant.getJavaCompile(), wird die Aufgabenkonfiguration möglicherweise trotzdem erzwungen. Damit Ihr Build für die Lazy-Task-Konfiguration optimiert ist, rufen Sie neue Methoden auf, die stattdessen ein TaskProvider-Objekt wie variant.getJavaCompileProvider() zurückgeben.

    Wenn Sie benutzerdefinierte Build-Aufgaben ausführen, erfahren Sie hier, wie Sie die neue API zur Aufgabenerstellung in Gradle verwenden.

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

  • Schnellere Generierung von R-Klassen für Bibliotheksprojekte:Bisher generierte das Android Gradle-Plug-in für jede Abhängigkeit Ihres Projekts eine R.java-Datei und kompilierte diese R-Klassen dann zusammen mit den anderen Klassen Ihrer App. Das Plug-in generiert jetzt direkt eine JAR-Datei mit der kompilierten R-Klasse Ihrer App, ohne zuerst ZwischenR.java-Klassen 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.

  • Wenn Sie ein Android App Bundle erstellen, enthalten die daraus generierten APKs, die 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 der App auf dem Laufwerk 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.

  • Synchronisierung eines Projekts mit einer einzelnen Variante: Die Synchronisierung Ihres Projekts mit Ihrer Build-Konfiguration ist ein wichtiger Schritt, damit Android Studio die Struktur Ihres Projekts erkennen kann. Bei großen Projekten kann dieser Vorgang jedoch zeitaufwendig sein. Wenn Sie in Ihrem Projekt mehrere Buildvarianten verwenden, können Sie 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 dem Android Gradle-Plug-in 3.3.0 oder höher verwenden, 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 (Android Studio > Einstellungen > Experimentell > Gradle auf einem Mac) und setzen Sie ein Häkchen in das Kästchen Nur die aktive Variante synchronisieren.

    Hinweis: Diese Optimierung unterstützt Projekte, die Java und C++ enthalten, vollständig. Kotlin wird teilweise unterstützt. Wenn Sie die Optimierung für Projekte mit Kotlin-Inhalten aktivieren, verwendet die Gradle-Synchronisierung intern die vollständigen Varianten.

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

Fehlerkorrekturen

  • Mit dem Android Gradle-Plug-in 3.3.0 werden 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 eingebundener annotation.AnyRes
    • Wenn Sie RenderScript verwenden, müssen Sie die Version der Build-Tools nicht mehr manuell in Ihren build.gradle-Dateien festlegen.