Agora, é possível configurar o Crashlytics no seu app usando o novo SDK oficial do Firebase Crashlytics, que oferece APIs aprimoradas que são mais intuitivas e consistentes com outros produtos Firebase.
Neste guia, você verá como fazer upgrade para o novo SDK usando o SDK do Fabric legado. Ele descreve as alterações que acompanham as novas APIs, o motivo das alterações e como atualizar seu código, se necessário.
Antes de começar
O Fabric adiciona GameObject
s ao cenário para inicializar o Crashlytics no
jogo, além de outros diretórios aos próprios SDKs.
Para garantir que não haja conflitos entre os plug-ins do Fabric Crashlytics e do Firebase Crashlytics, remova as seguintes pastas e arquivos do Fabric do seu projeto do Unity:
Em Assets, exclua os seguintes arquivos:
Assets/ Editor Default Resources/ FabricSettings.asset <- DELETE Fabric/ ><- DELETE Plugins/ Android/ answers/ ><- DELETE beta/ ><- DELETE crashlytics/ ><- DELETE crashlytics-wrapper/ ><- DELETE fabric/ ><- DELETE fabric-init/ ><- DELETE iOS/ Fabric/ ><- DELETE >
Em Hierarchy Window, remova os seguintes GameObjects
SampleScene Main Camera Directional Light Canvas EventSystem FabricInit <- DELETE CrashlyticsInit><- DELETE >
Remova todas as entradas do Fabric em Assets > Plugins > Android > AndroidManifest.xml.
Por exemplo, uma chave que precisa ser removida é:
android:name="io.fabric.unity.android.FabricApplication"
Pesquise e remova outras entradas do Fabric, se existirem.
Etapa 1: adicionar um arquivo de configuração do Firebase
Abra suas Configurações do projeto. No cartão Seus apps, selecione o ID ou o nome do pacote do app que precisa de um arquivo de configuração.
Faça o download do(s) arquivo(s) de configuração do Firebase específicos da plataforma em cada app.
- Para iOS+ —
GoogleService-Info.plist
- Para Android —
google-services.json
Para um único projeto do Unity, é possível ter no máximo dois arquivos de configuração.
- Para iOS+ —
No projeto do Unity, abra a janela Project e mova os arquivos de configuração para a pasta
Assets
.
Etapa 2: adicionar o SDK do Firebase Crashlytics
Faça o download do SDK do Firebase para Unity e descompacte o SDK em um local prático.
O SDK do Firebase para Unity não é específico da plataforma.
No seu projeto aberto do Unity, acesse Assets > Import Package > Custom Package.
No SDK descompactado, selecione para importar o SDK do Crashlytics (
FirebaseCrashlytics.unitypackage
). Verifique se você tem oFirebaseCrashlytics.unitypackage
versão 6.15.0 ou mais recente. Caso contrário, atualize a Versão do pacote de recursos. Isso é necessário para que seus relatórios de erros sejam exibidos no Console do Firebase.- Unity 2017.x e posteriores permitem o uso do framework
.NET 4.x. Caso seu projeto do Unity usar .o NET 4.x, importe
dotnet4/FirebaseCrashlytics.unitypackage
.
Você também pode importar qualquer outro produto do Firebase que oferece suporte.
- Unity 2017.x e posteriores permitem o uso do framework
.NET 4.x. Caso seu projeto do Unity usar .o NET 4.x, importe
Na janela Import Unity Package, clique em Import.
Crie um novo script em C# e adicione-o a um
GameObject
no cenário.Abra seu primeiro cenário e crie um
GameObject
em branco chamadoCrashlyticsInitializer
.Clique em Add Component no Inspector para o novo objeto.
Selecione seu script
CrashlyticsInit
para adicioná-lo ao objetoCrashlyticsInitializer
.
Inicialize o Crashlytics no método
Start
do script:using System.Collections; using System.Collections.Generic; using UnityEngine; // Import Firebase using Firebase; public class CrashlyticsInit : MonoBehaviour { // Use this for initialization void Start () { // Initialize Firebase Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your application class. // Crashlytics will use the DefaultInstance, as well; // this ensures that Crashlytics is initialized. Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; // Set a flag here for indicating that your project is ready to use Firebase. } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}",dependencyStatus)); // Firebase Unity SDK is not safe to use here. } }); } // Update is called once per frame void Update() // ... }
Com o SDK adicionado e inicializado, o Crashlytics automaticamente passa a detectar e coletar relatórios de erros.
Etapa 3: atualizar seu código
Revise as seguintes alterações do SDK e faça as atualizações adequadas no seu código:
O Crashlytics agora alterna IDs com base nos IDs de instalação do Firebase
O Crashlytics usa o UUID de instalação dele para identificar instâncias do app e associar os dados dos usuários aos dispositivos. Antes, o Crashlytics alternava o UUID de instalação do usuário quando o ID de publicidade do dispositivo era alterado. Agora, o Crashlytics alterna o UUID de instalação com base no ID de instalação do Firebase (FID, na sigla em inglês) do usuário. Para mais informações, acesse Gerenciar IDs de instalação do Firebase.
Motivo para a alteração
O uso de FIDs (IDs de instalação do Firebase, na sigla em inglês) é consistente com outros SDKs do Firebase.
O Fabric.Crashlytics agora é o Firebase.Crashlytics
Alteramos nosso namespace de Fabric
para Firebase
.
Fabric
using Fabric.Crashlytics;
Firebase
using Firebase.Crashlytics;
O RecordCustomException agora é LogException
Registre exceções não fatais personalizadas que foram capturadas e processadas.
Fabric
Crashlytics.RecordCustomException(string name, string reason, StackTrace stackTrace); Crashlytics.RecordCustomException(string name, string reason, string stackTraceString);
Firebase
Crashlytics.LogException(Exception ex);
Motivo para a alteração
Essa função é usada com mais frequência para registrar uma instância de um Exception
.
Em vez de exigir que você extraia o "nome", o "motivo" e o "stackTrace"
manualmente (o que resulta em código supérfluo), agora é possível fornecer a instância
do Exception
e permitir que o Firebase Crashlytics extraia as informações
necessárias.
Alternativa
Se você estivesse usando esses parâmetros de outra forma além de extrair as
informações de uma exceção diretamente, ainda seria possível alcançar o comportamento
anterior ao criar sua própria subclasse de Exception
com os metadados personalizados
na descrição.
O método SetKeyValue agora é SetCustomKey
Defina qualquer par de chave-valor para enviar junto com o relatório de erros. Redefinir a mesma chave atualizará o valor.
Fabric
Crashlytics.SetKeyValue(string key, string value);
Firebase
Crashlytics.SetCustomKey(string key, string value);
Motivo para a alteração
Esse método foi renomeado para tornar o comportamento mais claro e melhorar a consistência com outras APIs do Firebase.
O método SetUserIdentifier agora é SetUserId
Para entender qual usuário foi afetado por uma falha, defina um identificador de usuário.
Fabric
Crashlytics.SetUserIdentifier(string identifier);
Firebase
Crashlytics.SetUserId(string identifier);
Motivo para a alteração
Esse método foi renomeado para melhorar a consistência com outras APIs do Firebase. Como vantagem, ele é mais curto, e quem não gosta ter alguns caracteres a menos para digitar?
Os métodos SetUserEmail e SetUserName foram removidos
Anteriormente, era possível definir um nome ou e-mail associado a uma falha usando métodos explícitos. Essas informações não serão mais explicitamente definidas.
Fabric
Crashlytics.SetUserEmail(string email); Crashlytics.SetUserName(string name);
Motivo para a alteração
O Google se esforça para proteger os dados do cliente, e parte desse esforço é criar APIs que façam o mesmo para ferramentas de desenvolvimento. Essas APIs específicas do usuário foram removidas para incentivar o uso de métodos gerados e sem identificação pessoal para saber qual usuário foi afetado por uma falha.
Alternativa
Para especificar qual usuário teve uma falha, o método preferencial é usar
SetUserId
. No entanto, se essa não for uma solução durável, a mesma funcionalidade
poderá ser realizada usando SetCustomKey
.
Os métodos Crash e ThrowNonFatal foram removidos
Anteriormente, o Crashlytics fornecia dois métodos de utilitário para lançar exceções para fins de teste. Eles não serão incluídos no Firebase Crashlytics.
Fabric
Crashlytics.Crash(); Crashlytics.ThrowNonFatal();
Motivo para a alteração
O Crashlytics para Unity é executado em muitos ambientes diferentes, e é possível que ocorram diversos tipos de falhas. Esses métodos não especificavam claramente se as falhas resultantes ocorreram no C# ou no SDK nativo específico da plataforma.
Alternativa
- Teste sua implementação forçando uma falha de teste que enviará um relatório de falha ao painel do Crashlytics no Console do Firebase.
Etapa 4: criar seu projeto
Exporte seu projeto usando a caixa de diálogo Build Settings do Unity.
Após a conclusão da exportação, verifique se o projeto foi exportado corretamente ao comparar o projeto exportado com o exemplo de configurações de exportação abaixo.
iOS+
Android
Se parecer que faltam arquivos depois de comparar seu projeto, abra o Editor do Unity e execute o resolvedor do Google Play Services. Veja mais detalhes nas instruções abaixo.
(conforme necessário) Executar o resolvedor se faltarem arquivos após a exportação
O Gerenciador de dependências externas para Unity (EDM4U) garante que seu projeto do Unity tenha as dependências de tempo de execução adequadas para as plataformas Apple e Android. Para mais informações sobre o resolvedor, acesse o README do Resolvedor Jar do Unity.
Próximas etapas
Teste sua implementação forçando uma falha de teste que enviará um relatório de falha ao painel do Crashlytics no Console do Firebase.
Para personalizar a configuração do relatório de erros, adicione relatórios de ativação, registros, chaves e rastreamento de erros não fatais.
Adicione o Google Analytics ao seu aplicativo. Combine o poder do Google Analytics com o Firebase Crashlytics para ver estatísticas de usuários sem falhas no Console do Firebase.