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

Nesta página, você verá dicas e soluções de problemas específicos para o Unity que podem ser encontrados ao usar o Firebase.

Você está enfrentando algum outro desafio ou seu problema não está descrito abaixo? Confira as Perguntas frequentes sobre o Firebase para ver mais dúvidas relacionadas ao Firebase ou a um produto específico.

Compatibilidade com .NET ao usar o Unity 2017.x e versões mais recentes

O Firebase dá suporte a .NET 4.x como uma opção de versão experimental no Unity 2017 e mais recentes. Os plug-ins do Firebase usam componentes do SDK Parse (em inglês) para fornecer algumas classes do .NET 4.x em versões anteriores do .NET.

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

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

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

  1. Remova ou desative as DLLs a seguir para todas as plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. Ative as DLLs a seguir 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 DLLs a seguir para todas as plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. Ative as DLLs a seguir para todas as plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

Se você importar outro plug-in do Firebase:

  • No seu projeto do Unity, navegue para Assets > Play Services Resolver > Version Handler > Update para ativar as DLLs certas para seu projeto.

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

O Firebase dá suporte a .NET 4.x como uma opção de versão experimental no Unity 2017 e mais recentes. Os plug-ins do Firebase usam componentes do SDK Parse (em inglês) para fornecer algumas classes do .NET 4.x em versões anteriores do .NET.

Portanto, o SDK do Firebase Unity versão 5.4.0 e mais recentes fornece DLLs de encaminhamento de tipo que encaminham tipos do Parse (por exemplo, a implementação do Parse em System.Threading.Tasks.Task) para a biblioteca .NET. Infelizmente, o IL2CPP (transpilador que converte C# para C++) fornecido no Unity 2017.1.x não processa corretamente as DLLs de encaminhamento de tipo, resultando em erros de compilação com a seguinte aparência:

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

No momento, não há nenhuma solução disponível para erros de compilação do .NET 4.x IL2CPP no Unity 2017.1. Portanto, atualize para o Unity 2017.2 ou mais recentes para usar o .NET 4.x em projetos compilados com IL2CPP.

Rede do Unity 2017.2

O Firebase Realtime Database cria conexões de rede TLS usando a pilha de rede do .NET. A funcionalidade de TLS apresenta falha no Unity 2017.2 ao usar o .NET 4.6, fazendo com que o plug-in do Realtime Database não funcione no editor e no computador.

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

O arquivo de configuração do Firebase para Android está ausente no Unity 2020

Para oferecer suporte a versões do Unity que não conseguem personalizar a versão do Gradle, a ferramenta de edição do Firebase gera Assets/Plugins/Android/Firebase/res/values/google-services.xml como um recurso do Android a ser empacotado em uma versão do Android. que o SDK do Firebase pode usar para inicializar a instância padrão do FirebaseApp.

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

Um problema com um único dex ao criar um app Android

Ao criar um app para Android, você pode encontrar uma falha de compilação relacionada a ter um único arquivo dex. A mensagem de erro será semelhante à seguinte, caso seu projeto esteja configurado para usar o sistema de compilação do Gradle.

Cannot fit requested classes in a single dex file.

Os arquivos Dalvik Executable (.dex) são usados para conter um conjunto de definições de classe e os dados associados ao grupo de apps para Android (.apk). Um único arquivo dex está limitado a referências a métodos 65.536. A compilação falhará se o número total de métodos de todas as bibliotecas Android no projeto exceder esse limite.

O Unity introduziu a Minimização 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 Player Settings > Android > Publishing Settings > Minify. As opções podem ser diferentes em versões diferentes 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 será ativar multidex. Há várias maneiras de fazer isso no Unity:

  • Se Custom Gradle Template em Player Settings estiver ativado, modifique mainTemplate.gradle.
  • Se você usar o Android Studio para criar o projeto exportado, modifique o arquivo build.gradle do módulo.

Saiba mais detalhes no Guia do usuário do multidex.

Suporte e simplificação do Java 8 para versões do Android no Unity 2017 e Unity 2018 (SDK do Firebase para Unity 8.0.0 e versões mais recentes)

Em maio de 2021 (BoM do Firebase v28.0.0), o Firebase desativou a simplificação em todas as bibliotecas Android (consulte a nota da versão). Ao criar um app para Android com o SDK do Firebase para Unity (versão 8.0.0 e mais recentes), você poderá ver este erro de compilação:

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

Essa mudança afeta os builds do Android apenas no Unity 2017 e no Unity 2018. As versões mais recentes do Unity adicionam o bloco compileOptions por padrão nos arquivos de build do Gradle. Para corrigir esse erro de versão no Unity 2017 e no Unity 2018, siga um destes procedimentos:

  • Adicione um bloco compileOptions ao modelo do 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 nível de módulo build.gradle, se estiver exportando um projeto para o Android Studio):

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

Consulte também Solução de problemas do Android: simplificar as falhas de build.

Problemas na criação para iOS com o Cocoapods

Durante a criação para iOS, a instalação do Cocoapod pode falhar com um erro sobre a localidade do idioma ou a codificação UTF-8. No momento, há 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 recentes.

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

Como atualizar a versão dos SDKs do Firebase para Unity

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

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

No seu projeto Unity, use apenas um método de importação para gerenciar todos os pacotes do Firebase. As instruções abaixo podem ser usadas para atualizar a versão dos pacotes individuais, bem como para migrar o gerenciamento de pacotes para o UPM (o método de importação recomendado), se necessário.