Começar a usar o Firebase Crashlytics

Neste guia de início rápido, descrevemos como configurar o Firebase Crashlytics no seu app com o plug-in do Flutter do Crashlytics para que você receba relatórios de erros abrangentes no Console do Firebase.

A configuração do Crashlytics envolve o uso de uma ferramenta de linha de comando e do ambiente de desenvolvimento integrado. Para concluir a configuração, será necessário forçar uma exceção de teste para enviar seu primeiro relatório de erros ao Firebase.

Antes de começar

  1. Configure e inicialize o Firebase no seu projeto criado com o Flutter, caso ainda não tenha feito isso.

  2. Recomendado: para ter recursos como usuários sem falhas, registros de navegação estrutural e alertas de velocidade, ative o Google Analytics no seu projeto do Firebase.

    Todas as plataformas Android e Apple que recebem suporte do Crashlytics (exceto o watchOS) podem aproveitar esses recursos do Google Analytics.

    Verifique se o Google Analytics está ativado no seu projeto do Firebase: acesse a guia > Configurações do projeto > Integrações e siga as instruções na tela para o Google Analytics.

Etapa 1: adicionar o Crashlytics ao seu projeto do Flutter

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

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

    flutterfire configure
    

    A execução desse comando garante que a configuração do Firebase do seu app Flutter está atualizada e, no Android, adiciona o plug-in Gradle do Crashlytics necessário ao app.

  3. Após a conclusão, recrie seu projeto do Flutter:

    flutter run
    
  4. (Opcional) Se o projeto do Flutter utiliza a flag --split-debug-info e, opcionalmente, a flag --obfuscate, será necessário usar a CLI do Firebase (v.11.9.0+) para fazer upload de símbolos Android.

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

    firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols

    O diretório PATH/TO/symbols é o mesmo que você transmite para a flag --split-debug-info ao criar o aplicativo.

Etapa 2: configurar gerenciadores de falhas

Você pode capturar automaticamente todos os erros gerados no framework do 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 detectar erros assíncronos que não são processados pelo framework do 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 ver exemplos de como lidar com outros tipos de erros, consulte Personalizar relatórios de erros.

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 Console do Firebase, é necessário forçar a geração de uma exceção de teste.

  1. Adicione um código ao app que possa ser usado para forçar a geração de uma exceção de teste.

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

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

  3. Force a geração da exceção de teste para enviar o primeiro relatório do app:

    1. Abra o app no dispositivo ou emulador de teste.

    2. No seu app, pressione o botão de exceção de teste adicionado com o código acima.

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

    Se você atualizou o console e ainda não consegue ver a falha de teste após cinco minutos, ative a geração de registros de depuração para ver se o app está enviando relatórios de falha.


Pronto. O Crashlytics agora está monitorando seu app em busca de falhas e, no Android, erros não fatais e ANRs. Acesse o painel do Crashlytics para ver e analisar todos os relatórios e estatísticas.

Próximas etapas