Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Esta página oferece dicas e solução de 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 as principais Perguntas frequentes do Firebase para obter mais perguntas frequentes sobre o Firebase ou específicas do produto.

Compatibilidade .NET ao usar o Unity 2017.xe posterior

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

Portanto, o Firebase Unity SDK versão 5.4.0 e posterior fornece plug-ins compatíveis com .NET 3.x ou .NET 4.x nos diretórios dotnet3 e dotnet4 do Firebase Unity SDK.

Se você importar um plug-in do Firebase que é 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 Parse SDK.

Para resolver o erro de compilação, se você estiver usando o .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 o .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 do Unity, navegue até Assets > Play Services Resolver > Version Handler > Update para habilitar as DLLs corretas para seu projeto.

Compilação do Unity 2017.1 IL2CPP 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. Os plug-ins do Firebase usam componentes do Parse SDK para fornecer algumas classes .NET 4.x em versões anteriores do .NET.

Portanto, o SDK do Firebase Unity versão 5.4.0 e posterior fornece DLLs de encaminhamento de tipo que encaminham os tipos Parse (por exemplo, implementação Parse de System.Threading.Tasks.Task ) para a estrutura .NET. Infelizmente, o IL2CPP (um transpilador que converte C# em C++) fornecido no Unity 2017.1.x não processa corretamente as 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 .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, portanto, você deve usar uma versão diferente do Unity, por exemplo, a versão 2017.1 ou 2017.3.

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

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

No Unity 2020, todos os recursos do Android devem estar em diretórios com um sufixo .androidlib . Se seu projeto estiver usando um SDK do Firebase que gera um diretório Assets/Plugins/Android/Firebase , renomeie-o para Assets/Plugins/Android/Firebase.androidlib . Verifique se ele contém AndroidManifest.xml , project.properties e res/values/google-services.xml .

Um problema com o single dex ao criar o aplicativo Android

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

Cannot fit requested classes in a single dex file.

Os arquivos Dalvik Executable ( .dex ) são usados ​​para armazenar um conjunto de definições de classe e seus dados adjuntos associados para aplicativos 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 do Android em seu projeto exceder esse limite.

O Unity introduziu o Minification em 2017.2, que usa o Proguard (ou outras ferramentas em algumas versões do Unity) para remover 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.

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

  • Se Custom Gradle Template em Player Settings estiver ativado, modifique mainTemplate.gradle .
  • Se você usa o Android Studio para compilar o projeto exportado, modifique o arquivo build.gradle no nível do módulo.

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

Suporte e remoção de açúcar do Java 8 para compilaçõ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), o Firebase desativou a eliminação de açúcar para todas as suas bibliotecas Android (consulte a nota de lançamento ). Ao criar um aplicativo Android com o SDK do Firebase Unity (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

Essa alteração afeta apenas as versões do Android no Unity 2017 e no Unity 2018. Versões mais recentes do Unity adicionam o bloco compileOptions por padrão nos arquivos de compilação do gradle. Para corrigir esse erro de compilação no Unity 2017 e no Unity 2018, siga um destes procedimentos:

  • Adicione um bloco compileOptions ao seu modelo gradle:

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

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

Consulte também Solução de problemas do Android - falhas de compilação de redução de açúcar .

Problemas ao compilar para iOS com Cocoapods

Ao compilar 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.

  • No terminal, execute 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

Como atualizar a versão dos SDKs do Firebase Unity

O processo para atualizar as versões dos SDKs do Firebase Unity depende de como eles foram importados inicialmente. Aqui estão os dois métodos de importação alternativos:

  • Importando arquivos .unitypackage no diretório Assets/ do seu projeto
  • Importando usando o Unity Package Manager (UPM)
    • Essa é a maneira recomendada de gerenciar pacotes no Unity 2018.4+.
    • Use este método para facilitar futuras atualizações de versão e limpar seu diretório Assets/ .

Em seu projeto do Unity, você deve usar apenas um método de importação para gerenciar todos os seus pacotes do Firebase. As instruções abaixo podem ser usadas não apenas para atualizar a versão de pacotes individuais, mas também, se necessário, para migrar o gerenciamento de pacotes para o UPM (o método de importação recomendado).