Upgrade auf das Crashlytics Gradle-Plug-in 3

Die neueste Version des Crashlytics Gradle-Plug-ins ist eine Hauptversion (v3.0.0). Das SDK wird modernisiert, da die Unterstützung für niedrigere Versionen von Gradle und des Android-Gradle-Plug-ins eingestellt wird. Außerdem werden mit den Änderungen in diesem Release Probleme mit AGP v8.1 und höher behoben und die Unterstützung für native Apps und benutzerdefinierte Builds verbessert.

Mindestanforderungen

Crashlytics Für das Gradle-Plug-in v3 gelten die folgenden Mindestanforderungen:

  • Android Gradle-Plug-in 8.1 und höher
    Aktualisieren Sie dieses Plug-in mit dem Android Gradle-Plug-in-Upgrade-Assistenten in der neuesten Version von Android Studio.

  • google-servicesGradle-Plug-in von Firebase 4.4.1 und höher
    Aktualisieren Sie dieses Plug-in, indem Sie die neueste Version in der Gradle-Builddatei Ihres Projekts angeben. Gehen Sie dazu so vor:

plugins {
  id("com.android.application") version "8.1.4" apply false
  id("com.google.gms.google-services") version "4.4.2" apply false
  ...
}
plugins {
  id 'com.android.application' version '8.1.4' apply false
  id 'com.google.gms.google-services' version '4.4.2' apply false
  ...
}

Änderungen an der Crashlytics-Erweiterung

Mit Version 3 des Crashlytics-Gradle-Plug-ins gibt es folgende Änderungen an der Crashlytics-Erweiterung:

  • Die Erweiterung wurde aus dem Android-Block defaultConfig entfernt. Stattdessen sollten Sie jede Variante konfigurieren.

  • Das nicht mehr weitergeführte Feld mappingFile wurde entfernt. Stattdessen wird die zusammengeführte Zuordnungsdatei jetzt automatisch bereitgestellt.

  • Das nicht mehr weitergeführte Feld strippedNativeLibsDir wurde entfernt. Stattdessen sollten Sie für alle nativen Bibliotheken unstrippedNativeLibsDir verwenden.

  • Das Feld unstrippedNativeLibsDir wurde in ein kumulatives Feld geändert.

      buildTypes {
        release {
          configure<CrashlyticsExtension> {
            nativeSymbolUploadEnabled = true
            unstrippedNativeLibsDir = file("MY/NATIVE/LIBS")
          }
        }
        productFlavors {
          flavorDimensions += "feature"
          create("basic") {
            dimension = "feature"
            // ...
          }
          create("featureX") {
            dimension = "feature"
            configure<CrashlyticsExtension> {
              unstrippedNativeLibsDir = file("MY/FEATURE_X/LIBS")
            }
          }
        }
      }
      

    Mit der Aufgabe uploadCrashlyticsSymbolFilesBasicRelease werden nur die Symbole in MY/NATIVE/LIBS hochgeladen. Mit uploadCrashlyticsSymbolFilesFeatureXRelease werden dagegen Symbole sowohl in MY/NATIVE/LIBS als auch in MY/FEATURE_X/LIBS hochgeladen.

  • Das Schließungsfeld symbolGenerator wurde durch zwei neue Felder der obersten Ebene ersetzt:

    • symbolGeneratorType, ein String mit entweder "breakpad" (Standard) oder "csym".
    • breakpadBinary: Datei mit einem lokalen dump_syms-Binärüberschreibung

Beispiel für ein Upgrade der Erweiterung

Vorher
        buildTypes {
          release {
            configure<CrashlyticsExtension> {
              // ...
              symbolGenerator(
                closureOf<SymbolGenerator> {
                  symbolGeneratorType = "breakpad"
                  breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
                }
              )
            }
          }
        }
      
Jetzt in Version 3
        buildTypes {
          release {
            configure<CrashlyticsExtension> {
              // ...
              symbolGeneratorType = "breakpad"
              breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
            }
          }
        }
      
Vorher
        buildTypes {
          release {
            firebaseCrashlytics {
              // ...
              symbolGenerator {
                breakpad {
                  binary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
                }
              }
            }
          }
        }
      
Jetzt in Version 3
        buildTypes {
          release {
            firebaseCrashlytics {
              // ...
              symbolGeneratorType "breakpad"
              breakpadBinary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
            }
          }
        }