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
Configure e inicialize o Firebase no seu projeto criado com o Flutter, caso ainda não tenha feito isso.
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
> Integrações e siga as instruções na tela para o Google Analytics. > Configurações do projeto
Etapa 1: adicionar o Crashlytics ao seu projeto do Flutter
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
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.
Após a conclusão, recrie seu projeto do Flutter:
flutter run
(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.
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 oZone
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"), ),
Crie e execute seu app.
Force a geração da exceção de teste para enviar o primeiro relatório do app:
Abra o app no dispositivo ou emulador de teste.
No seu app, pressione o botão de exceção de teste adicionado com o código acima.
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
Personalize a configuração do relatório de erros adicionando relatórios de aceitação, registros, chaves e rastreamento de outros erros não fatais.
Faça a integração com o Google Play para filtrar os relatórios de erros do app Android por faixa do Google Play diretamente no painel do Crashlytics. Isso permite que você configure o painel para verificar versões específicas.
Veja stack traces e estatísticas de falhas com seu código na janela App Quality Insights no Android Studio (disponível a partir da versão Electric Eel 2022.1.1).