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 perguntas frequentes principais do 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 oferece suporte ao .NET 4.x como uma opção de compilação experimental no Unity 2017 e versões posteriores. Os plug-ins do Firebase usam componentes do Parse SDK 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 posterior fornece plug-ins compatíveis com .NET 3.x ou .NET 4.x nos diretórios dotnet3
e dotnet4
do SDK do Firebase Unity.
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 .NET Framework implementados pelo Parse SDK.
Para resolver o erro de compilação, se você estiver usando o .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 o .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é Ativos > Resolvedor do Play Services > Manipulador de versão > Atualizar 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 versões posteriores. Os plug-ins do Firebase usam componentes do Parse SDK 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 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 o .NET Framework. Infelizmente, o IL2CPP (um transpilador que converte C# em C++) fornecido 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>
Atualmente, 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 no desktop.
Não há solução alternativa para esse problema, portanto 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
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 Build 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 para Assets/Plugins/Android/Firebase.androidlib
. Certifique-se de que contém AndroidManifest.xml
, project.properties
e res/values/google-services.xml
.
Um problema com dex único durante a criação de um aplicativo Android
Ao criar um aplicativo Android, você pode encontrar uma falha de compilação relacionada ao fato de ter um único arquivo dex. A mensagem de erro será 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.
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 está limitado à referência a 65.536 métodos. A compilação falhará se o número total de métodos de todas as bibliotecas Android no seu projeto exceder esse limite.
O Unity introduziu a Minificaçã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 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 multidex
. Existem várias maneiras de conseguir isso no Unity:
- Se
Custom Gradle Template
nasPlayer Settings
estiver ativado, modifiquemainTemplate.gradle
. - Se você usar o Android Studio para criar o projeto exportado, modifique o arquivo
build.gradle
no nível do módulo.
Mais detalhes podem ser encontrados no guia do usuário do multidex .
Suporte e simplificação de Java 8 para compilações 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 desugaring 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ê poderá 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 compilaçõ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 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
Gradle
como sistema de compilação. - Habilite
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 Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Use
Alternativamente, aumente o minSdkVersion do seu projeto Android para 26 ou superior.
Consulte também Solução de problemas do Android - eliminação de falhas de compilação .
Problemas ao criar 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 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 de atualização das 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 futuras atualizações de versão e limpar seu diretório
Assets/
.
No seu projeto 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).
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 (recomendada) : 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 usando o fluxo de trabalho
.unitypackage
, ele compensa pela facilidade de atualizações subsequentes da versão do SDK.
Opção 2 : continuar 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, importe todos os
.unitypackages
da pastadotnet
correta.- Se você estiver usando o Unity 2019 ou posterior, importe da pasta
dotnet4
. - Caso contrário, selecione Scripting Runtime Version em Player Settings 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 do pacote importadas anteriormente deve ser tratada automaticamente pelo Gerenciador de Dependências Externas (que é incluído automaticamente quando você importa o 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.