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+
Exemplo de configuração de exportação para um espaço de trabalho do Xcode
Verifique se as dependências e a estrutura estão corretas:
YOUR_EXPORT_DIRECTORY / build/ Classes/ Data/ GoogleService-Info.plist <- Info.plist ... Libraries/ ... Plugins/ iOS/ Firebase/ libCrashlyticsiOSWrapper.a FIREBASE CONFIG FILE><- libFirebaseCppApp.a CRASHLYTICS LIBRARY><- ... ... Podfile.lock Pods FIREBASE CORE LIBRARY Podfile/><- FirebaseCrashlytics/ Firebase/ FirebaseAnalytics/ FirebaseCore/ FirebaseInstanceID/ GoogleAppMeasurement/ GoogleUtilities/ ... Unity-iPhone/ Tests/ Unity-iPhone.xcodeproj Unity-iPhone.xcworkspace DEPENDENCIES Unity-iPhone><- UnityData.xcassets COCOAPODS WORKSPACE>Android
Exemplo de configuração de exportação para um projeto do Android Studio
Verifique se as dependências e a estrutura estão corretas:
YOUR_EXPORT_DIRECTORY / build/ build.gradle ... Firebase/ <- gradle/ gradle.properties gradlew.bat libs FIREBASE FOR UNITY/><- DEPENDENCIES com.google.android.gms.play-services* com.google.firebase.firebase-crashlytics-* com.google.firebase.firebase-crashlytics-unity-* com.google.firebase.firebase-* ... src/ >Exemplo de configuração de exportação para o APK
Abra o APK no Android Studio e verifique se as dependências e a estrutura estão corretas:
lib/ x86/ libunity.so libmono.so libFirebaseCppApp-
VERSION .so <- libmain.so armeabi-v7a/ libunity.so libmono.so FIREBASE CORE LIBRARY libFirebaseCppApp->VERSION .so <- libmain.so assets/ classes.dex res/ resources.arsc AndroidManifest.xml firebase-*.properties FIREBASE CORE LIBRARY><- play-services*.properties FIREBASE PROPERTIES><- GMS PROPERTIES>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.
Veja instruções específicas da plataforma para executar o resolvedor
iOS+
O "Resolvedor do iOS" é executado automaticamente e usa Cocoapods
para colocar
as dependências no diretório Pods
exportado.
Para fazer o download do CocoaPods para sua máquina:
Navegue até Recursos > Gerenciador de dependências externas > Resolvedor do iOS > Instalar CocoaPods.Para ativar ou desativar a geração de podfiles (opcional):
Navegue até Recursos > Gerenciador de dependências externas > Resolvedor do iOS > Configurações.
Android
O "Resolvedor do Android" é executado automaticamente e usa gradle
para colocar
as dependências do Android em Assets/Plugins/Android
.
Para executar manualmente o resolvedor:
Acesse Recursos > Gerenciador de dependências externas > Resolvedor do Android > Resolver.Para ativar ou desativar a resolução automática, que fica ativada por padrão:
Navegue até Recursos > Gerenciador de dependências externas > Resolvedor do Android > Configurações.
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.