Depurando o processo de construção, instalação e execução do jogo

Introdução

Veja a seguir um guia para depurar o processo de compilação e criação de jogos Unity usando o SDK do Firebase para Unity. Ele descreve como investigar e resolver muitos dos problemas mais comuns que você pode encontrar ao configurar e criar seu jogo para uma nova plataforma ou após uma atualização. Ele é organizado na ordem em que esses erros podem ocorrer no processo. Consulte-os em ordem e proceda à medida que cada um for resolvido.

Além deste documento, consulte as Perguntas frequentes do Firebase for Unity para obter mais informações.

Problemas de compilação do modo Play

A primeira classe de problemas de compilação pode ocorrer durante o teste no editor antes de tentar iniciar uma compilação móvel. Esta seção trata de todos os erros do Firebase que ocorrem antes e durante o modo Play.

Quando o Unity iniciar ou detectar alterações nas dependências, código ou outros ativos, ele tentará reconstruir o projeto. Se o projeto não puder ser compilado naquele momento, o editor registrará erros de compilação no console e se você tentar entrar no modo Play, receberá um pop-up de erro na guia Cena do Unity que diz All compiler errors have to be fixed before you can enter playmode! .

Tipos, classes, métodos e membros ausentes

Muitos problemas do Firebase ocorrem devido à incapacidade do editor e do compilador de encontrar os tipos, classes, métodos e membros necessários. Os sintomas comuns disso são variantes do seguinte:

The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?

The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)

'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'

Etapas de resolução:
  1. Quando você estiver usando classes ou métodos do Firebase no código, certifique-se de disponibilizá-los tendo as diretivas using corretas para os produtos específicos do Firebase necessários.

    1. Exemplos do MechaHamster: Level Up With Firebase Edition :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. Verifique se você importou os pacotes apropriados do Firebase:

    1. Para importar os pacotes apropriados:
      1. Adicione o Firebase Unity SDK como .unitypackage s ou
      2. Analise e execute uma das alternativas em Opções adicionais de instalação do Unity .
    2. Certifique-se de que todos os produtos Firebase em seu projeto e EDM4U :
      • Estão na mesma versão
      • Foram instalados exclusivamente como .unitypackage OU exclusivamente por meio do Unity Package Manager.
  3. Se você importou o SDK do Firebase Unity anterior à versão "10.0.0" como .unitypackage s, o arquivo zip do SDK do Firebase Unity contém pacotes para suporte ao .NET 3.x e .NET 4.x. Certifique-se de ter incluído apenas o nível compatível do .NET Framework em seu projeto:

    1. A compatibilidade entre as versões do Unity Editor e os níveis do .NET Frameworks é discutida em Adicionar Firebase ao seu projeto Unity .
    2. Se você importou acidentalmente seus pacotes do Firebase no nível errado do .NET Framework ou precisa mudar do uso .unitypackage para uma das opções de instalação adicionais do Unity , a maneira mais limpa é remover todos os pacotes do Firebase por meio dos métodos mencionados nesta seção de migração e em seguida, reimporte todos os pacotes do Firebase novamente.
  4. Verifique se o seu editor está reconstruindo o seu projeto e se as suas tentativas de reprodução refletem o estado mais atual do seu projeto:

    1. Por padrão, o editor do Unity é configurado para recompilar sempre que alterações de ativos ou configurações forem detectadas.
    2. É possível que esta funcionalidade tenha sido desabilitada e que o Unity Editor esteja configurado para atualização/recompilação manual . Investigue isso e tente uma atualização manual, se for o caso.

Erros de tempo de execução do modo Play

Se o jogo iniciar, mas tiver problemas com o Firebase durante a execução, tente o seguinte:

Certifique-se de aprovar os pacotes do Firebase em "Segurança e privacidade" no Mac OS

Se, ao iniciar o jogo no editor no Mac OS, você receber uma caixa de diálogo que diz: "FirebaseCppApp-<versão>.bundle Não pode ser aberto porque o desenvolvedor não pode ser verificado.", você deverá aprovar esse arquivo de pacote específico em Menu Segurança e Privacidade do Mac.

Para fazer isso, clique em Ícone Apple > Preferências do Sistema > Segurança e Privacidade

No menu de segurança, na metade da página, há uma seção que diz ""FirebaseCppApp-<version>.bundle" foi bloqueado para uso porque não é de um desenvolvedor identificado."

Clique no botão rotulado Permitir mesmo assim .

c35166e224cce720.png

Volte para o Unity e pressione Play novamente.

Você verá então um aviso semelhante ao primeiro:

5ad9ddb0d3a52892.png

Pressione Abrir e seu programa poderá prosseguir; você não será questionado sobre este arquivo específico novamente.

Certifique-se de que seu projeto contenha e esteja usando arquivos de configuração válidos

  1. Certifique-se de que suas configurações de compilação estejam definidas para o destino pretendido (iOS ou Android) em File > Build Settings . Para uma discussão mais completa, leia a documentação de configurações de compilação do Unity .
  2. Baixe o arquivo de configuração do seu aplicativo ( google-services.json para Android ou GoogleService-Info.plist para iOS) e crie o destino no console do Firebase em Configurações do projeto > Seus aplicativos : se você já tiver esses arquivos, exclua-os do seu projeto e substitua-os pela versão mais recente, certificando-se de que estejam escritos exatamente como exibidos acima, sem "(1)" ou outros números anexados aos nomes dos arquivos.
  3. Se o console contiver uma mensagem sobre arquivos em Assets/StreamingAssets/ , certifique-se de que não haja mensagens no console informando que o Unity não conseguiu editar os arquivos lá
  4. Certifique-se de Assets/StreamingAssets/google-services-desktop.json seja gerado e corresponda ao arquivo de configuração baixado.
    • Se não for gerado automaticamente e StreamingAssets/ não existir, crie manualmente o diretório no diretório Assets .
    • Verifique se o Unity gerou google-services-desktop.json .

Certifique-se de que todos os produtos Firebase e EDM4U foram instalados exclusivamente por meio de .unitypackage ou do Unity Package Manager

  1. Verifique a pasta Assets/ e o Unity Package Manager para garantir que os SDKs do Firebase e o EDM4U foram instalados exclusivamente por meio de um ou outro método.
  2. Alguns plug-ins desenvolvidos pelo Google , como o Google Play, e plug-ins de terceiros podem depender do EDM4U. Esses plug-ins podem incluir EDM4U em seus pacotes .unitypackage s ou Unity Package Manager (UPM). Certifique-se de que haja apenas uma cópia do EDM4U em seu projeto. Se algum pacote UPM depender do EDM4U, é melhor manter apenas as versões UPM do EDM4U, que podem ser encontradas na página Google APIs for Unity Archive .

Certifique-se de que todos os produtos Firebase em seu projeto tenham a mesma versão.

  1. Se os SDKs do Firebase foram instalados por meio .unitypackage , verifique se todas as bibliotecas FirebaseCppApp em Assets/Firebase/Plugins/x86_64/ estão na mesma versão.
  2. Se os SDKs do Firebase foram instalados por meio do Unity Package Manager (UPM), abra Windows > Package Manager , pesquise "Firebase" e certifique-se de que todos os pacotes do Firebase estejam na mesma versão.
  3. Se o seu projeto contiver versões diferentes de SDKs do Firebase, recomendamos que você remova completamente todos os SDKs do Firebase antes de instalar todos os SDKs do Firebase novamente, desta vez com as mesmas versões. A maneira mais limpa é remover todos os pacotes do Firebase por meio dos métodos mencionados nesta seção de migração .

Erros de compilação do resolvedor e do dispositivo de destino

Se o seu jogo funcionar no editor (configurado para o destino de compilação apropriado de sua escolha), em seguida verifique se o Gerenciador de Dependência Externa para Unity (EDM4U) está configurado e funcionando corretamente.

O repositório GitHub EDM4U contém um guia passo a passo para esta parte do processo que você deve revisar e seguir antes de continuar.

Problemas e minificação de 'Single Dex' ( obrigatório se estiver usando Cloud Firestore)

Ao criar um aplicativo Android, você pode encontrar uma falha de compilação relacionada ao fato de ter um único arquivo dex. A mensagem de erro é semelhante à seguinte (se o seu projeto estiver configurado para usar o sistema de compilação Gradle):

Cannot fit requested classes in a single dex file.

Os arquivos .dex são usados ​​para armazenar um conjunto de definições de classe e seus dados adjuntos associados para aplicativos Android. Um único arquivo dex está limitado à referência a 65.536 métodos; builds falharão se o número total de métodos de todas as bibliotecas Android no seu projeto exceder esse limite.

As duas etapas a seguir podem ser aplicadas sequencialmente; habilite o multidex apenas se a minificação não resolver o problema.

Habilitar Minificação

O Unity introduziu a Minificação em 2017.2 para eliminar o código não utilizado, o que pode reduzir o número total de métodos referenciados em um único arquivo dex. * A opção pode ser encontrada em Configurações do Player > Android > Configurações de Publicação > Minify . * As opções podem diferir em diferentes versões do Unity, portanto consulte a documentação oficial do Unity.

Habilitar Multidex

Se, após habilitar a minificação, o número de métodos referenciados ainda ultrapassar o limite, outra opção é habilitar multidex . Existem várias maneiras de conseguir isso no Unity:

  • Se o modelo personalizado do Gradle nas configurações do player estiver ativado, modifique mainTemplate.gradle .
  • Se você usar o Android Studio para criar o projeto exportado, modifique o arquivo build.gradle no nível do módulo.

Mais detalhes podem ser encontrados no guia do usuário do multidex .

Compreender e corrigir erros de tempo de execução do dispositivo de destino

Se o seu jogo funcionar no editor e puder ser criado e instalado no dispositivo de destino, mas você encontrar erros de tempo de execução, inspecione e investigue os logs gerados no dispositivo .

Esta seção explica como investigar seus logs em busca de possíveis erros e um erro que ocorre apenas em tempo de execução no dispositivo ou simulador.

Android

Simulador

  • Inspecione os logs exibidos no console do seu emulador ou visualize a janela do Logcat .

Dispositivo

Familiarize-se com adb e adb logcat e como usá-los.

  • Embora você possa usar as diversas ferramentas do seu ambiente de linha de comando para filtrar a saída, considere alternativamente examinar as opções do logcat.
  • Uma maneira simples de iniciar uma sessão ADB do zero é:

    adb logcat -c && adb logcat <OPTIONS>
    

    onde OPTIONS são os sinalizadores que você passa na linha de comando para filtrar a saída.

Usando Logcat através do Android Studio

Ao usar o Logcat por meio do Android Studio , estão disponíveis ferramentas de pesquisa adicionais que simplificam a geração de pesquisas produtivas.

iOS

Inspecionando registros

Se estiver executando um dispositivo físico, conecte-o ao computador. Inspecione lldb no Xcode.

Problemas rápidos

Se você encontrar logs de erros mencionando Swift, consulte a seção Gerenciador de Dependências Externas para Unity sobre eles.

Etapas adicionais

Se o seu jogo ainda apresentar problemas de compilação, compilação ou execução relacionados ao Firebase, investigue a página de problemas do SDK do Firebase para Unity e considere registrar um novo problema. Além disso, consulte a página de suporte do Firebase para saber mais sobre opções adicionais.