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:
- Remova ou desative as DLLs a seguir para todas as plataformas:
Parse/Plugins/dotNet45/Unity.Compat.dll
Parse/Plugins/dotNet45/Unity.Tasks.dll
- 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:
- Remova ou desative as DLLs a seguir para todas as plataformas:
Parse/Plugins/Unity.Compat.dll
Parse/Plugins/Unity.Tasks.dll
- 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
emPlayer Settings
estiver ativado, modifiquemainTemplate.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:- Use
Gradle
como o sistema de compilação. - Ative
Custom Gradle Template
emPlayer Settings
. Adicione as seguintes linhas a
mainTemplate.gradle
(ou nível de módulobuild.gradle
, se estiver exportando um projeto para o Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Use
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, adicioneexport 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órioAssets/
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.