Catch up on everthing we announced at this year's Firebase Summit. Learn more

Solução de problemas e perguntas frequentes para Unity e Firebase

Esta página oferece dicas e solução de problemas para problemas específicos do Unity que você pode encontrar ao usar o Firebase.

Tem outros desafios ou não vê seu problema descrito abaixo? Certifique-se de verificar o principal Firebase FAQ para FAQ mais pan-Firebase ou específico do produto.

Compatibilidade com .NET ao usar Unity 2017.x e posterior

O Firebase oferece suporte ao .NET 4.x como uma opção de compilação experimental no Unity 2017 e posterior. Plugins Firebase usar componentes da Parse SDK para fornecer algumas classes .NET 4.x em versões anteriores do .NET.

Portanto, o Firebase Unidade SDK versão 5.4.0 e posterior fornecem plugins que são compatíveis com qualquer .NET 3.x ou .NET 4.x em dotnet3 e dotnet4 diretórios do Firebase Unidade SDK.

Se você importar um plug-in do Firebase incompatível com a versão .NET habilitada em seu projeto, verá erros de compilação de alguns tipos na estrutura .NET que são implementados pelo SDK do Parse.

Para resolver o erro de compilação, se você estiver usando .NET 3.x:

  1. Remova ou desative as seguintes DLLs para todas as plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Habilite as seguintes DLLs para todas as plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

Para resolver o erro de compilação, se você estiver usando .NET 4.x:

  1. Remova ou desative as seguintes DLLs para todas as plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Habilite as seguintes DLLs para todas as plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Se você importar outro plug-in do Firebase:

  • Em seu projeto Unidade, navegar para o Ativo> Play Services Resolver> Versão Handler> Atualização para permitir que as DLLs corretas para o seu projeto.

Compilação IL2CPP do Unity 2017.1 em projetos .NET 4.x

O Firebase oferece suporte ao .NET 4.x como uma opção de compilação experimental no Unity 2017 e posterior. Plugins Firebase usar componentes da Parse SDK para fornecer algumas classes .NET 4.x em versões anteriores do .NET.

Portanto, o Firebase Unidade SDK versão 5.4.0 e posterior fornece DLLs de encaminhamento do tipo que encaminhar tipos parse (por exemplo, implementação Parse de System.Threading.Tasks.Task ) para o .NET framework. Infelizmente, o IL2CPP (um transpiler que converte C # em C ++) enviado no Unity 2017.1.x não processa corretamente DLLs de encaminhamento de tipo, o que resulta em erros de compilação semelhantes aos seguintes:

Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>

No momento, não há solução alternativa disponível para erros de compilação do .NET 4.x IL2CPP no Unity 2017.1, portanto, você deve atualizar para o Unity 2017.2 ou posterior para usar o .NET 4.x em projetos compilados com IL2CPP.

Rede Unity 2017.2

O Firebase Realtime Database cria conexões de rede TLS usando a pilha de rede .NET. A funcionalidade TLS é interrompida no Unity 2017.2 ao usar o .NET 4.6, fazendo com que o plug-in do Realtime Database falhe nos editores e na área de trabalho.

Não há solução alternativa para esse problema, então você deve usar uma versão diferente do Unity, por exemplo, versão 2017.1 ou 2017.3.

Arquivo de configuração do Firebase Android ausente no Unity 2020

A fim de versões de suporte de unidade que não tem a capacidade de personalizar a construção Gradle, a ferramenta editor Firebase gera Assets/Plugins/Android/Firebase/res/values/google-services.xml como um recurso Android para ser empacotado em um Compilação do Android, para que o Firebase SDK possa usá-lo para inicializar a instância FirebaseApp padrão.

Na Unidade de 2020, todos os recursos do Android deve estar em diretórios com um .androidlib sufixo. Se seu projeto está usando um Firebase SDK que gera uma Assets/Plugins/Android/Firebase diretório, renomeá-lo para Assets/Plugins/Android/Firebase.androidlib . Certifique-se que contém AndroidManifest.xml , project.properties e res/values/google-services.xml .

Um problema com o único dex durante a construção de um aplicativo Android

Ao construir um aplicativo Android, você pode encontrar uma falha de construção relacionada a 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.

Dalvik Executable ( .dex arquivos) são utilizados para armazenar um conjunto de definições de classe e seus dados adjuntos associados para aplicações Android ( .apk ). Um único arquivo dex é limitado a referência a 65.536 métodos. A compilação falhará se o número total de métodos de todas as bibliotecas Android em seu projeto exceder esse limite.

Unidade introduzido Minificação em 2017,2, que utiliza Proguard (ou outras ferramentas em algumas versões de unidade) para retirar o código não utilizada, o que pode reduzir o número total de processos referenciados em um único arquivo dex. A opção pode ser encontrada nas Configurações do Jogador> Android> Publishing Configurações> Minify. As opções podem ser diferentes nas diferentes versões do Unity, portanto, consulte a documentação oficial do Unity.

Se o número de métodos referenciados ainda excede o limite, uma outra opção é para permitir multidex . Existem várias maneiras de conseguir isso no Unity:

  • Se Custom Gradle Template sob Player Settings está habilitado, modificar mainTemplate.gradle .
  • Se você usa o Android Studio para criar o projeto exportado, modificar-nível de módulo build.gradle arquivo.

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

Suporte e remoção de Java 8 para versões do Android no Unity 2017 e Unity 2018 (Firebase Unity SDK 8.0.0 e superior)

Em Maio de 2021 (Firebase BoM v28.0.0), Firebase Dessacarificação desativado para todas as suas bibliotecas Android (ver nota de lançamento ). Ao criar um aplicativo Android com Firebase Unity SDK (8.0.0 e superior), você pode ver o seguinte erro de compilação:

> Error while dexing.
 The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle

Esta mudança afeta as compilações do Android no Unity 2017 e no Unity 2018 apenas. Versões mais recentes do Unity adicionar o compileOptions bloco por padrão em arquivos de compilação Gradle. Para corrigir esse erro de compilação no Unity 2017 e no Unity 2018, siga um destes procedimentos:

  • Adicionar um compileOptions bloco para o seu modelo Gradle:

    1. Use Gradle como o sistema de compilação.
    2. Ativar Custom Gradle Template sob Player Settings .
    3. Adicione as seguintes linhas para mainTemplate.gradle (ou nível de módulo build.gradle se exportando um projeto para Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Como alternativa, aumente minSdkVersion para seu projeto Android para 26 ou superior.

Veja também resolução de problemas Android - Dessacarificação falhas de compilação .

Problemas ao construir para iOS com Cocoapods

Ao construir para iOS, a instalação do Cocoapod pode falhar com um erro sobre a localidade do idioma ou codificação UTF-8. Atualmente, existem várias maneiras diferentes de contornar o problema.

  • A partir do terminal, run pod install diretamente, e abra o arquivo xcworkspace resultante.

  • Faça o downgrade da versão do Cocoapods para 1.10.2. O problema existe apenas na versão 1.11 e mais recente.

  • Em seu ~/.bash_profile ou equivalente, adicione export LANG=en_US.UTF-8