O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

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 e 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 iOSGoogleService-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 "name", o "reason" 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 para iOS ou Android.

  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.

    Se parecer que faltam arquivos depois de comparar seu projeto, abra o Editor do Unity e execute o resolvedor do Google Play Services (veja as instruções abaixo).

    iOS

    Android

Executar o resolvedor se faltarem arquivos após a exportação (conforme necessário)

Os resolvedores do Google Play Services garantem que seu projeto do Unity tenha as dependências apropriadas para exportar seu aplicativo para iOS ou Android. Para mais informações sobre o resolvedor, acesse o README do Resolvedor Jar do Unity.

Próximas etapas