Este guia descreve como personalizar seus relatórios de falhas usando o Firebase Crashlytics SDK. Por padrão, o Crashlytics coleta automaticamente relatórios de falhas para todos os usuários do seu aplicativo (você pode desativar os relatórios automáticos de falhas e habilitar relatórios opcionais para seus usuários). O Crashlytics fornece quatro mecanismos de log prontos para uso: chaves personalizadas , logs personalizados , identificadores de usuário e exceções capturadas .
Adicionar chaves personalizadas
As chaves personalizadas ajudam você a obter o estado específico do seu aplicativo que leva a uma falha. Você pode associar pares de chave/valor arbitrários a seus relatórios de travamento e, em seguida, usar as chaves personalizadas para pesquisar e filtrar relatórios de travamento no console do Firebase.
No painel do Crashlytics , você pode pesquisar problemas que correspondam a uma chave personalizada.
Ao revisar um problema específico no console, você pode visualizar as chaves personalizadas associadas a cada evento (subguia Chaves ) e até mesmo filtrar os eventos por chaves personalizadas (menu Filtro na parte superior da página).
Use o método de instância setCustomKey
para definir pares chave/valor. Observe que setCustomKey
está sobrecarregado para o parâmetro value
para aceitar qualquer argumento primitivo ou String
. aqui estão alguns exemplos:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("my_string_key", "foo") // String value key("my_bool_key", true) // boolean value key("my_double_key", 1.0) // double value key("my_float_key", 1.0f) // float value key("my_int_key", 1) // int value }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("my_string_key", "foo" /* string value */); crashlytics.setCustomKey("my_bool_key", true /* boolean value */); crashlytics.setCustomKey("my_double_key", 1.0 /* double value */); crashlytics.setCustomKey("my_float_key", 1.0f /* float value */); crashlytics.setCustomKey("my_int_key", 1 /* int value */);
Você também pode modificar o valor de uma chave existente chamando a chave e definindo-a com um valor diferente. Por exemplo:
Kotlin+KTX
val crashlytics = Firebase.crashlytics crashlytics.setCustomKeys { key("current_level", 3) key("last_UI_action", "logged_in") }
Java
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance(); crashlytics.setCustomKey("current_level", 3); crashlytics.setCustomKey("last_UI_action", "logged_in");
Adicione pares chave/valor em massa passando uma instância de CustomKeysAndValues
para o método de instância setCustomKeys
:
Kotlin+KTX
Para Kotlin, a funcionalidade existente é mais simples do que usar o construtor CustomKeysAndValues
.
crashlytics.setCustomKeys { key("str_key", "hello") key("bool_key", true) key("int_key", 1) key("long_key", 1L) key("float_key", 1.0f) key("double_key", 1.0) }
Java
CustomKeysAndValues keysAndValues = new CustomKeysAndValues.Builder() .putString("string key", "string value") .putString("string key 2", "string value 2") .putBoolean("boolean key", True) .putBoolean("boolean key 2", False) .putFloat("float key", 1.01) .putFloat("float key 2", 2.02) .build(); FirebaseCrashlytics.getInstance().setCustomKeys(keysAndValues);
Adicionar mensagens de registro personalizadas
Para obter mais contexto para os eventos que levaram a uma falha, você pode adicionar logs personalizados do Crashlytics ao seu aplicativo. O Crashlytics associa os logs aos seus dados de travamento e os exibe na página Crashlytics do console do Firebase , na guia Logs .
Use log
para ajudar a identificar problemas. Por exemplo:
Kotlin+KTX
Firebase.crashlytics.log("message")
Java
FirebaseCrashlytics.getInstance().log("message");
Definir identificadores de usuário
Para diagnosticar um problema, muitas vezes é útil saber quais usuários tiveram uma determinada falha. O Crashlytics inclui uma maneira de identificar usuários anonimamente em seus relatórios de travamento.
Para adicionar IDs de usuário a seus relatórios, atribua a cada usuário um identificador exclusivo na forma de um número de ID, token ou valor de hash:
Kotlin+KTX
Firebase.crashlytics.setUserId("user123456789")
Java
FirebaseCrashlytics.getInstance().setUserId("user123456789");
Se você precisar limpar um identificador de usuário depois de defini-lo, redefina o valor para uma string em branco. A limpeza de um identificador de usuário não remove os registros existentes do Crashlytics. Se você precisar excluir registros associados a um ID de usuário, entre em contato com o suporte do Firebase .
(Somente Android NDK) Adicionar metadados a relatórios de falhas do NDK
Opcionalmente, você pode incluir o cabeçalho crashlytics.h
em seu código C++ para adicionar metadados aos relatórios de travamento do NDK, como chaves personalizadas , logs personalizados e identificadores de usuário . Todas essas opções estão descritas nesta página acima.
crashlytics.h
está disponível como uma biblioteca C++ somente de cabeçalho no repositório GitHub do Firebase Android SDK .
Leia os comentários no arquivo de cabeçalho para obter instruções sobre como usar as APIs C++ do NDK.
Relatar exceções não fatais
Além de relatar automaticamente as falhas do seu aplicativo, o Crashlytics permite que você registre exceções não fatais e as envie para você na próxima vez que o aplicativo for iniciado.
Use o método recordException
para registrar exceções não fatais nos blocos catch
do seu aplicativo. Por exemplo:
Kotlin+KTX
try { methodThatThrows() } catch (e: Exception) { Firebase.crashlytics.recordException(e) // handle your exception here }
Java
try { methodThatThrows(); } catch (Exception e) { FirebaseCrashlytics.getInstance().recordException(e); // handle your exception here }
Todas as exceções registradas aparecem como problemas não fatais no console do Firebase. O resumo do problema contém todas as informações de estado que você normalmente obtém de travamentos, juntamente com avarias por versão do Android e dispositivo de hardware.
O Crashlytics processa exceções em um thread de segundo plano dedicado para minimizar o impacto no desempenho do seu aplicativo. Para reduzir o tráfego de rede dos usuários, o Crashlytics agrupa as exceções registradas e as envia na próxima vez que o aplicativo for iniciado.
Ativar relatório de ativação
Por padrão, o Crashlytics coleta automaticamente relatórios de falhas para todos os usuários do seu aplicativo. Para dar aos usuários mais controle sobre os dados que eles enviam, você pode habilitar relatórios opcionais desativando os relatórios automáticos e enviando dados apenas para o Crashlytics quando você escolher em seu código:
No bloco de
application
do arquivoAndroidManifest.xml
, adicione uma tag demeta-data
para desativar a coleta automática:<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Ative a coleta para usuários selecionados chamando a substituição da coleta de dados do Crashlytics no tempo de execução. O valor de substituição persiste nas inicializações do seu aplicativo para que o Crashlytics possa coletar relatórios automaticamente. Para desativar o relatório de travamento automático, passe
false
como o valor de substituição. Quando definido comofalse
, o novo valor não se aplica até a próxima execução do aplicativo.Kotlin+KTX
Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Java
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
Gerenciar dados do Crash Insights
O Crash Insights ajuda você a resolver problemas comparando seus rastreamentos de pilha anônimos com os rastreamentos de outros aplicativos do Firebase e informando se o problema faz parte de uma tendência maior. Para muitos problemas, o Crash Insights ainda fornece recursos para ajudá-lo a depurar o travamento.
O Crash Insights usa dados de falhas agregados para identificar tendências comuns de estabilidade. Se preferir não compartilhar os dados do seu aplicativo, você pode desativar o Crash Insights no menu Crash Insights na parte superior da lista de problemas do Crashlytics no console do Firebase .