Android-Gradle-Plug-in 3.4.0 (April 2019)

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

3.4.3 (Juli 2020)

<ph type="x-smartling-placeholder"></ph> Dieses kleine Update unterstützt die Kompatibilität mit neuen Standardeinstellungen und Funktionen für Paketsichtbarkeit für Android 11.

Weitere Informationen finden Sie in den Versionshinweisen zu 4.0.1.

3.4.2 (Juli 2019)

Dieses kleine Update unterstützt Android Studio 3.4.2 und enthält verschiedene Fehler Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste mit wichtigen Fehlerkorrekturen finden Sie im entsprechenden Beitrag auf der <ph type="x-smartling-placeholder"></ph> Blog „Release Updates“

3.4.1 (Mai 2019)

Dieses kleine Update unterstützt Android Studio 3.4.1 und enthält verschiedene Fehler Fehlerkorrekturen und Leistungsverbesserungen. Eine Liste mit wichtigen Fehlerkorrekturen finden Sie im entsprechenden Beitrag auf der <ph type="x-smartling-placeholder"></ph> Blog „Release Updates“

Neue Funktionen

  • Neue Lint-Überprüfungsabhängigkeitskonfigurationen: Das Verhalten von lintChecks hat sich geändert und es gibt eine neue Abhängigkeit. wird die lintPublish-Konfiguration eingeführt, um Sie haben mehr Kontrolle darüber, welche Lint-Prüfungen Bibliotheken.

    • lintChecks: Dies ist eine vorhandene Konfiguration, die die Sie für Lint-Prüfungen verwenden, die nur beim Erstellen von lokal zu Ihrem Projekt. Wenn Sie zuvor die Funktion lintChecks-Abhängigkeitskonfiguration zum Einbeziehen von Lint im veröffentlichten automatisch angewendeten Empfehlungen überprüft, müssen Sie diese Abhängigkeiten um stattdessen die neue lintPublish-Konfiguration zu verwenden beschrieben.
    • lintPublish: Diese neue Konfiguration in der Bibliothek verwenden Projekte für Lint-Prüfungen, die Sie in die veröffentlichten AAE aufnehmen möchten, wie unten dargestellt. Das bedeutet, dass Projekte, die Ihre Bibliothek nutzen, und wenden diese Lint-Prüfungen an.

    Im folgenden Codebeispiel werden beide Abhängigkeitskonfigurationen in einem lokales Android-Bibliotheksprojekt.

    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 beim Erstellen von Paketen und Signieren ein Gesamt-Build angezeigt werden. um die Geschwindigkeit zu erhöhen. Wenn Sie einen Leistungsabfall aufgrund diese Aufgaben ausführen, melden Sie den Fehler.

Verhaltensänderungen

  • Einstellung des Funktions-Plug-ins für Android Instant Apps Warnung: Wenn Sie noch das com.android.feature-Plug-in zum Erstellen deiner Instant-App, Das Android-Gradle-Plug-in 3.4.0 zeigt eine Einstellungswarnung an. Damit du deine Instant-App auch auf zukünftigen Versionen von das Plug-in, migriere deine Instant-App zu Dynamisches Funktions-Plug-in mit der du sowohl deine installierte App als auch deine Instant-App mit einem einzigen Android App Bundle.

  • R8 standardmäßig aktiviert:R8 integriert die Desugarierung, Verkleinern, Verschleiern, Optimieren und Entfernen alles in einem Schritt – was dazu führt, in bemerkenswerte Build-Leistung Verbesserungen. R8 wurde im Android-Gradle-Plug-in 3.3.0 eingeführt und ist jetzt standardmäßig sowohl für App- als auch für Android-Bibliotheksprojekte aktiviert. mit Plug-in 3.4.0 und höher.

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

Vor R8 war ProGuard ein anderer Kompilierungsschritt
              zur Entzuckerung.

Jetzt mit R8, Entzuckerung, Schrumpfung, Verschleierung, Optimierung und Dexing (D8) in einem Schritt abgeschlossen werden, wie unten dargestellt.

Mit R8 können Desugaring,
Verkleinerung, Verschleierung, Optimierung
      Das Dexing erfolgt in einem einzigen Kompilierungsschritt.

Beachten Sie, dass R8 für Ihre vorhandenen ProGuard-Regeln konzipiert ist. müssen Sie wahrscheinlich keine Maßnahmen ergreifen, um von R8 zu profitieren. Sie können jedoch da es sich um eine andere Technologie als ProGuard handelt, bei Android-Projekten kann eine Reduzierung und Optimierung dazu führen, dass Code entfernt wird. die es bei ProGuard vielleicht nicht gibt. In dieser unwahrscheinlichen Situation müssen Sie möglicherweise um weitere Regeln hinzuzufügen, um diesen Code in der Build-Ausgabe beizubehalten.

Wenn bei der Verwendung von R8 Probleme auftreten, lesen Sie FAQs zur R8-Kompatibilität um zu prüfen, ob es eine Lösung für Ihr Problem gibt. Wenn eine Lösung nicht dokumentiert ist, melden Sie den Fehler. Sie können R8 deaktivieren, indem Sie eine der folgenden Zeilen in das gradle.properties-Datei:

      # 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 Build-Typ useProguard bis false in deiner App build.gradle verwendet, nutzt das Android-Gradle-Plug-in R8 um den Code Ihrer App für diesen Build-Typ zu verkleinern, unabhängig davon, ob Sie deaktivieren Sie R8 in der gradle.properties-Datei Ihres Projekts.

  • ndkCompile wurde eingestellt:Sie erhalten jetzt ein Build-Fehler, wenn Sie versuchen, Ihre Datei mit ndkBuild zu kompilieren native Bibliotheken. Sie sollten stattdessen entweder CMake oder ndk-build verwenden, Fügen Sie C- und C++-Code Projekt.

Bekannte Probleme

  • Die korrekte Verwendung eindeutiger Paketnamen wird derzeit nicht erzwungen in späteren Versionen des Plug-ins jedoch strenger. Auf Android-Geräten Version 3.4.0 des Gradle-Plug-ins verwenden, um zu prüfen, Projekt akzeptierte Paketnamen, indem die folgende Zeile zu Ihre gradle.properties-Datei.

              android.uniquePackageNames = true
              
            

    Weitere Informationen zum Festlegen eines Paketnamens über den Android-Gradle-Plug-in finden Sie unter Legen Sie die Anwendungs-ID fest.