Obtenha relatórios de falhas legíveis no painel do Crashlytics

Por padrão, o Firebase Crashlytics instrumenta automaticamente seu projeto Flutter para fazer upload dos arquivos de símbolos necessários que garantem que os relatórios de falhas sejam desofuscados e legíveis por humanos.

Infelizmente, há casos que podem fazer com que o projeto não esteja totalmente configurado. Este guia descreve o que a automação faz e fornece as primeiras etapas para depurar a configuração do seu projeto.

Plataformas Apple

Verifique sua configuração para fazer upload de arquivos dSYM

Adicionar o plug-in Crashlytics Flutter e executar o comando flutterfire configure tentará adicionar um script de execução ao espaço de trabalho Xcode do seu projeto que encontra e carrega os arquivos de símbolo dSYM necessários para o Crashlytics. Sem esses arquivos, você verá um alerta "DSYM ausente" no painel do Crashlytics e as exceções serão retidas pelo back-end até que os arquivos ausentes sejam carregados.

Se você tiver esse problema, primeiro certifique-se de ter o script de execução instalado:

  1. Localize e abra o arquivo do espaço de trabalho Xcode no diretório iOS do seu projeto ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace ).

  2. Identifique se um script de execução intitulado [firebase_crashlytics] Crashlytics Upload Symbols foi adicionado às fases de compilação do destino Runner.

    Consulte a seção aplicável abaixo para saber se o script de execução não existe ou se o script de execução existe .

Se este script de execução não existir, você poderá adicioná-lo manualmente:

  1. Localize o ID do aplicativo Firebase para seu aplicativo Apple. Aqui estão dois lugares diferentes onde você pode encontrar esse ID:

    • No console do Firebase, acesse seu > Configurações do projeto . Role para baixo até o cartão Seus aplicativos e clique em seu aplicativo Firebase Apple para visualizar as informações do aplicativo, incluindo seu ID do aplicativo .

    • No diretório de nível superior do seu projeto Flutter, encontre o arquivo firebase_options.dart . O ID do aplicativo Firebase para seu aplicativo Apple é rotulado como GOOGLE_APP_ID .

  2. Clique em > Nova fase de execução de script .

    Certifique-se de que esta nova fase Run Script seja a última fase de construção do seu projeto. Caso contrário, o Crashlytics não poderá processar dSYMs adequadamente.

  3. Expanda a nova seção Executar Script .

  4. No campo script (localizado sob o rótulo Shell ), adicione os seguintes scripts de execução.

    Esses scripts processam seus arquivos dSYM e carregam os arquivos no Crashlytics.

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID : seu ID do aplicativo Firebase Apple (não seu ID do pacote Apple)
      Exemplo de ID do aplicativo Apple do Firebase: 1:1234567890:ios:321abc456def7890

    Aqui estão duas maneiras de encontrar seu ID do aplicativo Firebase:

    • No arquivo GoogleService-Info.plist , o ID do aplicativo é o valor GOOGLE_APP_ID ; ou

    • No console do Firebase, acesse as configurações do projeto . Role para baixo até o cartão Seus aplicativos e clique no aplicativo Firebase desejado para encontrar seu ID do aplicativo.

  5. Na seção Arquivos de entrada , adicione os caminhos para os locais dos seguintes arquivos:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    l10n
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

    O Xcode procura esses arquivos de entrada nos locais especificados para garantir que os arquivos de construção estejam disponíveis para o script de execução. Além disso, se o User Script Sandboxing estiver ativado, o Xcode permitirá apenas que o script de execução acesse os arquivos especificados em Input Files .

    • Fornecer a localização dos arquivos dSYM do seu projeto permite que o Crashlytics processe dSYMs.
    • Fornecer a localização do arquivo GoogleService-Info.plist criado pelo seu aplicativo permite que o Crashlytics associe os dSYMs ao seu aplicativo Firebase.
    • Fornecer a localização do executável do seu aplicativo permite que o script de execução evite uploads duplicados do mesmo dSYM. Observe que os binários do aplicativo não são carregados .

Se o script de execução existir, consulte o guia específico da Apple para solucionar problemas de dSYM . Você precisará seguir as seguintes etapas adicionais se optar por fazer upload de seus arquivos dSYM por meio do processo descrito:

  1. Localize o ID do aplicativo Firebase para seu aplicativo Apple. Aqui estão dois lugares diferentes onde você pode encontrar esse ID:

    • No console do Firebase, acesse seu > Configurações do projeto . Role para baixo até o cartão Seus aplicativos e clique em seu aplicativo Firebase Apple para visualizar as informações do aplicativo, incluindo seu ID do aplicativo .

    • No diretório de nível superior do seu projeto Flutter, encontre o arquivo firebase_options.dart . O ID do aplicativo Firebase para seu aplicativo Apple é rotulado como GOOGLE_APP_ID .

  2. Ao executar o script upload-symbols , use -ai FIREBASE_APPLE_APP_ID em vez de -gsp /path/to/GoogleService-Info.plist .

Verifique a configuração da sua versão para Flutter e Crashlytics (se estiver usando o sinalizador --split-debug-info )

Se o seu projeto Flutter usar o sinalizador --split-debug-info (e, opcionalmente, também o sinalizador --obfuscate ), etapas adicionais serão necessárias para mostrar rastreamentos de pilha legíveis para seu aplicativo.

Certifique-se de que seu projeto esteja usando a configuração de versão recomendada (Flutter 3.12.0+ e plug-in Crashlytics Flutter 3.3.4+) para que seu projeto possa gerar e fazer upload automaticamente de símbolos Flutter (arquivos dSYM) para o Crashlytics.

Android

Verifique sua configuração de dependência

O comando flutterfire configure tenta adicionar as dependências necessárias aos arquivos de compilação Gradle do seu projeto. Sem essas dependências, os relatórios de falhas no console do Firebase podem ficar ofuscados se a ofuscação estiver ativada.

Certifique-se de que as seguintes linhas estejam presentes no build.gradle no nível do projeto e no build.gradle no nível do aplicativo:

  • No arquivo de compilação no nível do projeto ( android/build.gradle ), verifique a seguinte linha:

    dependencies {
    // ... other dependencies

    classpath
    'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • No arquivo de compilação no nível do aplicativo ( android/app/build.gradle ), verifique a seguinte linha:

    // ... other imports

    android
    {
    // ... your android config
    }

    dependencies
    {
    // ... your dependencies
    }

    // This section must appear at the bottom of the file
    apply plugin
    : 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Verifique se você está usando a CLI para fazer upload de símbolos Flutter (se estiver usando o sinalizador --split-debug-info )

Se o seu projeto Flutter usar o sinalizador --split-debug-info (e, opcionalmente, também o sinalizador --obfuscate ), etapas adicionais serão necessárias para mostrar rastreamentos de pilha legíveis para seu aplicativo.

Use a CLI do Firebase (v.11.9.0+) para fazer upload de símbolos de depuração do Flutter. Você precisa fazer upload dos símbolos de depuração antes de relatar uma falha de uma compilação de código ofuscada.

No diretório raiz do seu projeto Flutter, execute o seguinte comando:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID : seu ID do aplicativo Android do Firebase (não o nome do seu pacote)
    Exemplo de ID do aplicativo Android do Firebase: 1:567383003300:android:17104a2ced0c9b9b

    Aqui estão duas maneiras de encontrar seu ID do aplicativo Firebase:

    • No arquivo google-services.json , o ID do aplicativo é o valor mobilesdk_app_id ; ou

    • No console do Firebase, acesse as configurações do projeto . Role para baixo até o cartão Seus aplicativos e clique no aplicativo Firebase desejado para encontrar seu ID do aplicativo.

  • PATH/TO /symbols : O mesmo diretório que você passa para o sinalizador --split-debug-info ao construir o aplicativo

Se os problemas persistirem, consulte o guia específico do Android para solucionar problemas de relatórios ofuscados .