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 as principais perguntas frequentes sobre o Firebase para obter mais perguntas frequentes sobre o Firebase ou específicas do produto.
Compatibilidade com .NET ao usar o Unity 2017.xe posterior
O Firebase é compatível com .NET 4.x como uma opção de compilação experimental no Unity 2017 e posterior. Os plug-ins do Firebase usam componentes do SDK do Parse para fornecer algumas classes .NET 4.x em versões anteriores do .NET.
Portanto, o Firebase Unity SDK 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 Firebase Unity 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 no framework .NET que são implementados pelo SDK do Parse.
Para resolver o erro de compilação, se você estiver usando .NET 3.x:
- Remova ou desative as seguintes DLLs para todas as plataformas:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- 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:
- Remova ou desative as seguintes DLLs para todas as plataformas:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- 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 Unity, navegue até Assets > Play Services Resolver > Version Handler > Update para habilitar as DLLs corretas para seu projeto.
Compilação Unity 2017.1 IL2CPP em projetos .NET 4.x
O Firebase é compatível com .NET 4.x como uma opção de compilação experimental no Unity 2017 e posterior. Os plug-ins do Firebase usam componentes do SDK do Parse 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 DLLs de encaminhamento de tipo que encaminham tipos de análise (por exemplo, implementação de análise de System.Threading.Tasks.Task
) para a estrutura .NET. Infelizmente, o IL2CPP (um transpiler 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 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, 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 de edição 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 o sufixo .androidlib
. Se 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
. Certifique-se de que contém AndroidManifest.xml
, project.properties
e res/values/google-services.xml
.
Um problema com o single dex durante a criação do 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 manter 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 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 Player Settings > Android > Publishing Settings > 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
emPlayer Settings
estiver ativado, modifiquemainTemplate.gradle
. - Se você usar 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 simplificação do Java 8 para versões do Android no Unity 2017 e no Unity 2018 (Firebase Unity SDK 8.0.0 e superior)
Em maio de 2021 (Firebase BoM v28.0.0), o Firebase desativou a simplificação de todas as suas bibliotecas Android (consulte a 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
Essa alteração afeta as compilações do Android apenas 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 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:- Use o
Gradle
como o sistema de compilação. - Ative
Custom Gradle Template
emPlayer Settings
. Adicione as seguintes linhas a
mainTemplate.gradle
(oubuild.gradle
nível do módulo se estiver exportando um projeto para o Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Use o
Como alternativa, aumente o minSdkVersion para seu projeto Android para 26 ou superior.
Consulte também Solução de problemas do Android - simplificando falhas de compilação .
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, adicioneexport 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 alternativos de importação:
- Importando arquivos
.unitypackage
no diretórioAssets/
do seu projeto - Importando usando o Unity Package Manager (UPM)
- Esta é a maneira recomendada de gerenciar pacotes no Unity 2018.4+.
- Use este método para facilitar as atualizações de versões futuras e limpar o diretório
Assets/
.
Em seu projeto Unity, você deve usar apenas um método de importação para gerenciar todos os seus pacotes 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 UPM (o método de importação recomendado).
Se os pacotes do Firebase estiverem no diretório Assets/
, você terá duas opções para atualizar a versão do SDK:
Opção 1 (recomendado) : Migrar para usar o UPM (disponível no Unity 2018.4+)
- Siga as instruções fornecidas pelo Firebase para migrar o gerenciamento de pacotes para o UPM .
- Embora esse método exija mais configuração inicial do que continuar a usar o fluxo de trabalho
.unitypackage
, ele compensa com a facilidade de atualizações subsequentes da versão do SDK.
Opção 2 : continue a usar arquivos
.unitypackage
para importá-los para o diretórioAssets/
Importe cada um dos pacotes para a versão atualizada.
Se você baixar firebase_unity_sdk.zip do site do Firebase, certifique-se de importar todos os
.unitypackages
da pastadotnet
correta.- Se você estiver usando o Unity 2019 ou posterior, importe da pasta
dotnet4
. - Caso contrário, selecione Versão do tempo de execução do script em Configurações do player e, se estiver definido como ".NET 3.x", importe da pasta
dotnet3
.
- Se você estiver usando o Unity 2019 ou posterior, importe da pasta
A substituição das versões de pacote importadas anteriormente deve ser tratada automaticamente pelo Gerenciador de dependência externa (que é incluído automaticamente quando você importa Firebase
.unitypackages
).No entanto, se e SOMENTE se esse processo automático falhar, você precisará excluir manualmente as seguintes pastas e tentar novamente a etapa de importação acima.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Se os pacotes do Firebase forem gerenciados pelo UPM, importe a versão mais recente do SDK como .tgz
. Esta importação substituirá automaticamente a versão anterior.