Fazer upgrade para o plug-in do Gradle para Crashlytics v3

A versão mais recente do plug-in do Gradle para Crashlytics é uma das versões principais do Google (v3.0.0) e moderniza o SDK eliminando o suporte a versões anteriores do Gradle e do Plug-in do Android para Gradle. Além disso, as mudanças nesta versão resolvem problemas com o AGP v8.1+ e melhoram o suporte a apps nativos e builds personalizados.

Requisitos mínimos

O plug-in do Gradle para Crashlytics v3 tem os seguintes requisitos mínimos:

  • Plug-in do Android para Gradle 8.1+
    Atualize o plug-in usando o Assistente de upgrade do Plug-in do Android para Gradle na versão mais recente do Android Studio.

  • Plug-in google-services do Firebase para Gradle 4.4.1+
    Faça upgrade do plug-in especificando a versão mais recente no arquivo de build do Gradle do seu projeto desta forma:

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

Mudanças na extensão do Crashlytics

Com a v3 do plug-in do Gradle para Crashlytics, a extensão do Crashlytics tem estas alterações interruptivas:

  • A extensão foi removida do bloco do Android defaultConfig. Em vez disso, precisa configurar cada variante.

  • O campo descontinuado mappingFile foi removido. Em vez disso, o arquivo de mapeamento mesclado é fornecido automaticamente.

  • O campo descontinuado strippedNativeLibsDir foi removido. Em vez disso, use unstrippedNativeLibsDir para todas as bibliotecas nativas.

  • O campo unstrippedNativeLibsDir foi mudado para ser cumulativo.

      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")
            }
          }
        }
      }
      

    A tarefa uploadCrashlyticsSymbolFilesBasicRelease só vai fazer upload dos símbolos em MY/NATIVE/LIBS, mas uploadCrashlyticsSymbolFilesFeatureXRelease vai fazer upload dos símbolos ambos MY/NATIVE/LIBS e MY/FEATURE_X/LIBS.

  • O campo de interdição symbolGenerator foi substituído por dois novos campos de nível superior:

    • symbolGeneratorType, uma string de "breakpad" (padrão) ou "csym":
    • breakpadBinary, um arquivo de uma substituição binária local de dump_syms.

Exemplo de como fazer upgrade da extensão

Antes
        buildTypes {
          release {
            configure<CrashlyticsExtension> {
              // ...
              symbolGenerator(
                closureOf<SymbolGenerator> {
                  symbolGeneratorType = "breakpad"
                  breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
                }
              )
            }
          }
        }
      
Agora na v3
        buildTypes {
          release {
            configure<CrashlyticsExtension> {
              // ...
              symbolGeneratorType = "breakpad"
              breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
            }
          }
        }
      
Antes
        buildTypes {
          release {
            firebaseCrashlytics {
              // ...
              symbolGenerator {
                breakpad {
                  binary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
                }
              }
            }
          }
        }
      
Agora na v3
        buildTypes {
          release {
            firebaseCrashlytics {
              // ...
              symbolGeneratorType "breakpad"
              breakpadBinary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
            }
          }
        }