Neste guia de início rápido, vamos mostrar como configurar o Firebase Crashlytics no seu app com o plug-in do Crashlytics no Flutter para receber 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, você terá que 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 gerar automaticamente registros de navegação estrutural e entender as ações do usuário que levam a uma falha, um evento não fatal ou um ANR, você precisa para ativar o Google Analytics no seu projeto do Firebase.
Se o Google Analytics não estiver ativado no seu projeto do Firebase, ative o Google Analytics na guia Integrações das suas
no console do > Configurações do projetoFirebase. Se você estiver criando um novo projeto do Firebase, ative o Google Analytics durante a criação.
Os registros de navegação estrutural estão disponíveis para todas as plataformas Android e Apple compatíveis com o Crashlytics (exceto o watchOS).
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 para o Crashlytics:
Para aproveitar os registros de navegação estrutural, adicione também o plug-in do Flutter para o Google Analytics ao seu app. Verifique se o Google Analytics está ativado no seu projeto do Firebase.
flutter pub add firebase_crashlytics && flutter pub add firebase_analytics
No diretório raiz do projeto do Flutter, execute este comando:
flutterfire configure
Fazer isso 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 usa a flag
--split-debug-info
(e, opcionalmente, também a flag--obfuscate
), outras etapas são necessárias para mostrar stack traces legíveis para seus apps.Plataformas Apple: verifique se o projeto está usando a configuração de versão recomendada (Flutter 3.12.0+ e plug-in do Flutter do Crashlytics 3.3.4+) para que ele possa gerar e fazer upload automaticamente de símbolos do 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 um build de código ofuscado.
No diretório raiz do projeto do Flutter, execute o seguinte comando:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
FIREBASE_APP_ID: seu ID do app Android do Firebase (não o nome do pacote)
Exemplo de ID do app Android do Firebase:1:567383003300:android:17104a2ced0c9b9b
PATH/TO/symbols
: o mesmo diretório que você passa 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 conferir os dados iniciais no painel do Crashlytics no 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 que foi adicionado com o código acima.
Acesse o painel do Crashlytics no console do Firebase para ver a falha do teste.
Se você já atualizou o console e ainda não está vendo a falha de teste depois de 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 pela faixa do Google Play diretamente no painel do Crashlytics. Isso permite que você configure o painel para monitorar builds específicos.
Confira 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).