Android Gradle Plugin 3.4.0 (April 2019)

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

Mindestversion Standardversio 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 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.4.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.4.2 (Juli 2019)

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

3.4.1 (Mai 2019)

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

Neue Funktionen

  • Neue Konfigurationen für Lint-Prüfungsabhängigkeiten:Das Verhalten von lintChecks hat sich geändert und es wurde eine neue Abhängigkeitskonfiguration namens lintPublish eingeführt, mit der Sie besser steuern können, welche Lint-Prüfungen in Ihren Android-Bibliotheken verpackt werden.

    • lintChecks: Dies ist eine vorhandene Konfiguration, die Sie für Lint-Prüfungen verwenden sollten, die nur beim lokalen Erstellen Ihres Projekts ausgeführt werden sollen. Wenn Sie zuvor die lintChecks-Abhängigkeitskonfiguration verwendet haben, um Lint-Prüfungen in die veröffentlichte AAR aufzunehmen, müssen Sie diese Abhängigkeiten migrieren, um stattdessen die unten beschriebene neue lintPublish-Konfiguration zu verwenden.
    • lintPublish: Verwenden Sie diese neue Konfiguration in Bibliotheksprojekten für Lint-Prüfungen, die in die veröffentlichte AAR aufgenommen werden sollen, wie unten dargestellt. Das bedeutet, dass diese Lint-Prüfungen auch auf Projekte angewendet werden, die Ihre Bibliothek verwenden.

    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 die Buildgeschwindigkeit bei den Aufgaben zum Verpacken und Signieren insgesamt verbessert werden. Wenn Sie eine Leistungsverschlechterung 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 zum Erstellen Ihrer Instant App weiterhin das com.android.feature-Plug-in verwenden, erhalten Sie mit dem Android Gradle-Plug-in 3.4.0 eine Warnung zur Einstellung. Damit Sie Ihre Instant-App auch in zukünftigen Versionen des Plug-ins erstellen können, sollten Sie sie auf das Plug-in für dynamische Funktionen umstellen. So können Sie sowohl Ihre installierbare App als auch Ihre Instant-App über ein einziges Android App Bundle veröffentlichen.

  • R8 standardmäßig aktiviert:R8 integriert Desugaring, Schrumpfen, Verschleierung, Optimierung und Dexing in einem Schritt. Das führt zu erheblichen 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 mit dem Plug-in 3.4.0 und höher aktiviert.

Das folgende Bild bietet einen allgemeinen Überblick über den Kompilierungsprozess vor der Einführung von R8.

Vor R8 war ProGuard ein anderer Kompilierungsschritt als Dexing und Desugaring.

Mit R8 werden Desugaring, Schrumpfen, Verschleierung, Optimierung und Dexing (D8) jetzt in einem Schritt ausgeführt, wie unten dargestellt.

Mit R8 werden Desugaring, Schrumpfen, Verschleierung, Optimierung und Dexing in einem einzigen Kompilierungsschritt ausgeführt.

R8 ist für die Verwendung mit Ihren vorhandenen ProGuard-Regeln konzipiert. Sie müssen also wahrscheinlich nichts unternehmen, 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 das Schrumpfen und Optimieren dazu führen, dass 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 bei der Verwendung von R8 Probleme auftreten, lesen Sie die häufig gestellten Fragen zur Kompatibilität von R8, um zu sehen, 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 der gradle.properties-Datei Ihres Projekts eine der folgenden Zeilen hinzufü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 Buildtyp in der Datei build.gradle Ihres App-Moduls useProguard auf false festlegen, verwendet das Android Gradle-Plug-in R8, um den Code Ihrer App für diesen Buildtyp zu komprimieren, unabhängig davon, ob Sie R8 in der Datei gradle.properties Ihres Projekts deaktivieren.

  • ndkCompile wird eingestellt:Wenn Sie versuchen, Ihre nativen Bibliotheken mit ndkBuild zu kompilieren, erhalten Sie jetzt einen Buildfehler. 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. Mit der Android-Gradle-Plug-in-Version 3.4.0 können Sie prüfen, ob Ihr Projekt zulässige Paketnamen deklariert. Fügen Sie dazu der Datei gradle.properties die folgende Zeile hinzu.

              android.uniquePackageNames = true
              
            

    Weitere Informationen zum Festlegen eines Paketnamens über das Android Gradle-Plug-in finden Sie unter Anwendungs-ID festlegen.