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 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.
Caso seu projeto do Firebase não tenha o Google Analytics ativado, faça a ativação na guia Integrações das suas
no Console do Firebase. > Configurações do projeto Se estiver criando um novo projeto do Firebase, ative o Google Analytics durante o fluxo de trabalho de criação do projeto.
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 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 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 aplicativos.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 Firebase CLI (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 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 conferir 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.
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).