Fazer upgrade para o SDK do Firebase Crashlytics

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 GameObjects 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

  1. 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.

  2. 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 Androidgoogle-services.json

    Para um único projeto do Unity, é possível ter no máximo dois arquivos de configuração.

  3. 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

  1. 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.

  2. No seu projeto aberto do Unity, acesse Assets > Import Package > Custom Package.

  3. No SDK descompactado, selecione para importar o SDK do Crashlytics (FirebaseCrashlytics.unitypackage). Verifique se você tem o FirebaseCrashlytics.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.

  4. Na janela Import Unity Package, clique em Import.

  5. Crie um novo script em C# e adicione-o a um GameObject no cenário.

    1. Abra seu primeiro cenário e crie um GameObject em branco chamado CrashlyticsInitializer.

    2. Clique em Add Component no Inspector para o novo objeto.

    3. Selecione seu script CrashlyticsInit para adicioná-lo ao objeto CrashlyticsInitializer.

  6. 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

  1. Exporte seu projeto usando a caixa de diálogo Build Settings do Unity.

  2. 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

  3. 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