Android Gradle-Plug-in 3.3.0 (Januar 2019)

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

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 4.0.1.

3.3.2 (März 2019)

Dieses kleine Update unterstützt Android Studio 3.3.2 und enthält verschiedene Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste wichtiger Fehlerkorrekturen finden Sie im zugehörigen Beitrag im Blog „Release Updates“.

3.3.1 (Februar 2019)

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

Neue Funktionen

  • Verbesserte Synchronisierung von Klassenpfaden:Beim Auflösen von Abhängigkeiten von Laufzeit- und Kompilierungszeitklassenpfaden versucht das Android-Gradle-Plug-in, bestimmte nachgelagerte Versionskonflikte für Abhängigkeiten zu beheben, die über mehrere Klassenpfade hinweg auftreten.

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

    Wenn der Laufzeitklassenpfad jedoch Bibliothek A Version 1.0 enthält und die Kompilierung Bibliothek A Version 2.0 enthält, führt das Plug-in kein Downgrade der Abhängigkeit vom Kompilierungsklassenpfad auf Bibliothek A Version 1.0 durch und Sie erhalten eine Fehlermeldung. Weitere Informationen finden Sie unter Konflikte zwischen Klassenpfaden beheben.

  • Verbesserte inkrementelle Java-Kompilierung bei Verwendung von Annotationsprozessoren: Dieses Update verringert die Build-Zeit, da die Unterstützung der inkrementellen Java-Kompilierung bei Verwendung von Annotationsprozessoren verbessert wird.

    Hinweis: Diese Funktion ist aufgrund des Gradle-Problems 8194 mit Gradle 4.10.1 und höher mit Ausnahme von Gradle 5.1 kompatibel.

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

    • Für Projekte, die nicht Kapt verwenden (nur Java-Projekte): Wenn die von Ihnen verwendeten Annotationsprozessoren die inkrementelle Annotationsverarbeitung unterstützen, ist die inkrementelle Java-Kompilierung standardmäßig aktiviert. Informationen zum Monitoring der inkrementellen Akzeptanz von Annotationsprozessern 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 aufnehmen:

      android.enableSeparateAnnotationProcessing=true
                  

      Wenn Sie dieses Flag hinzufü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 Informationen zur Fehlerbehebung bei Verwendung einer veralteten API:Wenn das Plug-in erkennt, dass Sie eine nicht mehr unterstützte API verwenden, kann es jetzt detailliertere Informationen liefern, mit denen Sie feststellen können, 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 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 Featuremodule über die Befehlszeile ausführen.

Änderungen des Verhaltens

  • Konfiguration von Lazy Tasks:Im Plug-in wird jetzt die neue Taskerstellungs-API von Gradle verwendet. So wird das Initialisieren und Konfigurieren von Aufgaben, die für den Abschluss des aktuellen Builds nicht erforderlich sind (bzw. Aufgaben, die nicht in der Grafik der Ausführungsaufgaben enthalten sind) erforderlich. Wenn Sie beispielsweise mehrere Build-Varianten haben, z. B. „Release-“ und „Debug“-Build-Varianten, und eine Debug-Version Ihrer App erstellen, werden mit dem Plug-in keine Aufgaben für die Release-Version Ihrer App initialisiert und konfiguriert.

    Der Aufruf bestimmter älterer Methoden in der Variants API, z. B. variant.getJavaCompile(), kann die Aufgabenkonfiguration weiterhin erzwingen. Damit Ihr Build für die Konfiguration von Lazy Tasks 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 sich an die neue Task-creation API von Gradle anpassen.

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

  • Schnellere Generierung von R-Klassen für Bibliotheksprojekte:Bisher hat das Android-Gradle-Plug-in für jede Abhängigkeiten 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, die die kompilierte R-Klasse Ihrer Anwendung enthält, ohne dass zuerst R.java-Zwischenklassen erstellt werden. Durch diese Optimierung kann die Build-Leistung für Projekte, die viele Bibliotheksunterprojekte und Abhängigkeiten enthalten, erheblich verbessert und die Indexierungsgeschwindigkeit in Android Studio verbessert.

  • Beim Erstellen eines Android App Bundles enthalten APKs, die auf Android 6.0 (API-Level 23) oder höher ausgerichtet sind, standardmäßig nicht komprimierte Versionen deiner nativen Bibliotheken. Durch diese Optimierung muss das Gerät keine Kopie der Bibliothek erstellen. Dadurch verringert sich die Größe Ihrer Anwendung auf dem Laufwerk. 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 für einige Plug-ins von Drittanbietern eine Mindestversion.

  • Projektsynchronisierung mit einer Variante: Das Synchronisieren Ihres Projekts mit Ihrer Build-Konfiguration ist ein wichtiger Schritt, damit Android Studio verstehen kann, wie Ihr Projekt strukturiert ist. Dieser Vorgang kann bei großen Projekten jedoch zeitaufwändig sein. Wenn in Ihrem Projekt mehrere Build-Varianten verwendet werden, können Sie die Projektsynchronisierung 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 von der IDE aufgefordert, diese Optimierung beim Synchronisieren Ihres Projekts zu aktivieren. Die Optimierung ist außerdem bei neuen Projekten standardmäßig aktiviert.

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

    Hinweis: Diese Optimierung unterstützt Projekte, die die Sprachen Java und C++ sowie Kotlin enthalten, vollständig. Wenn die Optimierung für Projekte mit Kotlin-Inhalten aktiviert wird, verwendet die Gradle-Synchronisierung intern wieder vollständige Varianten.

  • Automatisches Herunterladen fehlender SDK-Pakete: Diese Funktion wurde erweitert, um NDK zu unterstützen. Weitere Informationen findest du unter Fehlende Pakete mit Gradle automatisch herunterladen.

Fehlerkorrekturen

  • Das Android-Gradle-Plug-in 3.3.0 behebt die folgenden Probleme:

    • Der Build-Prozess, bei dem android.support.v8.renderscript.RenderScript anstelle der AndroidX-Version aufgerufen wird, obwohl Jetifier aktiviert ist
    • Konflikte aufgrund von androidx-rs.jar, einschließlich statisch gebündelter annotation.AnyRes
    • Wenn du RenderScript verwendest, musst du die Build-Tools-Version nicht mehr manuell in deinen build.gradle-Dateien festlegen