Comece a usar o Firebase Crashlytics

Este guia de início rápido descreve como configurar o Firebase Crashlytics em seu aplicativo com o plug-in Crashlytics Flutter para que você possa obter relatórios de falhas abrangentes no console do Firebase.

A configuração do Crashlytics envolve o uso de uma ferramenta de linha de comando e de seu IDE. Para concluir a configuração, você precisará forçar o lançamento de uma exceção de teste para enviar seu primeiro relatório de falha ao Firebase.

Antes de você começar

  1. Se ainda não o fez, configure e inicialize o Firebase em seu projeto Flutter.

  2. Recomendado : para obter automaticamente registros de localização atual para entender as ações do usuário que levam a um evento de falha, não fatal ou ANR, você precisa ativar o Google Analytics em seu projeto do Firebase.

    • Se o seu projeto existente do Firebase não tiver o Google Analytics ativado, você poderá ativar o Google Analytics na guia Integrações do seu > Configurações do projeto no console do Firebase.

    • Se você estiver criando um novo projeto do Firebase, ative o Google Analytics durante o fluxo de trabalho de criação do projeto.

    Observe que os registros de navegação estão disponíveis para todas as plataformas Android e Apple suportadas pelo Crashlytics (exceto watchOS).

Etapa 1 : adicione Crashlytics ao seu projeto Flutter

  1. Na raiz do seu projeto Flutter, execute o seguinte comando para instalar o plug-in Flutter para Crashlytics.

    Para aproveitar as vantagens dos registros de localização atual , adicione também o plug-in Flutter para Google Analytics ao seu aplicativo. Certifique-se de que o Google Analytics esteja ativado em seu projeto Firebase.

    flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
    
  2. No diretório raiz do seu projeto Flutter, execute o seguinte comando:

    flutterfire configure
    

    A execução deste comando garante que a configuração do Firebase do seu aplicativo Flutter esteja atualizada e, para Android, adiciona o plug-in Crashlytics Gradle necessário ao seu aplicativo.

  3. Depois de concluído, reconstrua seu projeto Flutter:

    flutter run
    
  4. (Opcional) 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 seus aplicativos.

    • Plataformas Apple: 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: 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

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

Etapa 2 : configurar gerenciadores de falhas

Você pode capturar automaticamente todos os erros gerados na estrutura Flutter substituindo FlutterError.onError por FirebaseCrashlytics.instance.recordFlutterFatalError :

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught "fatal" errors from the framework to Crashlytics
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

Para capturar erros assíncronos que não são tratados pela estrutura Flutter, use PlatformDispatcher.instance.onError :

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    FlutterError.onError = (errorDetails) {
      FirebaseCrashlytics.instance.recordFlutterFatalError(errorDetails);
    };
    // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics
    PlatformDispatcher.instance.onError = (error, stack) {
      FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
      return true;
    };
    runApp(MyApp());

}

Para obter exemplos de como lidar com outros tipos de erros, consulte Personalizar relatórios de falhas .

Etapa 3 : forçar uma falha de teste para concluir a configuração

Para concluir a configuração do Crashlytics e ver os dados iniciais no painel do Crashlytics do console do Firebase, você precisa forçar o lançamento de uma exceção de teste.

  1. Adicione código ao seu aplicativo que você pode usar para forçar o lançamento de uma exceção de teste.

    Se você adicionou um gerenciador de erros que chama FirebaseCrashlytics.instance.recordError(error, stack, fatal: true) ao Zone de nível superior, você pode usar o código a seguir para adicionar um botão ao seu aplicativo que, quando pressionado, lança uma exceção de teste:

    TextButton(
        onPressed: () => throw Exception(),
        child: const Text("Throw Test Exception"),
    ),
    
  2. Crie e execute seu aplicativo.

  3. Force o lançamento da exceção de teste para enviar o primeiro relatório do seu aplicativo:

    1. Abra seu aplicativo no dispositivo de teste ou emulador.

    2. No seu aplicativo, pressione o botão de exceção de teste que você adicionou usando o código acima.

  4. Acesse o painel do Crashlytics do console do Firebase para ver a falha do teste.

    Se você atualizou o console e ainda não vê a falha do teste após cinco minutos, habilite o registro de depuração para ver se seu aplicativo está enviando relatórios de falha.


E é isso! O Crashlytics agora está monitorando seu aplicativo em busca de falhas e, no Android, erros não fatais e ANRs. Visite o painel do Crashlytics para visualizar e investigar todos os seus relatórios e estatísticas.

Próximos passos