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:
- 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 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
emPlayer Settings
estiver ativado, modifiquemainTemplate.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:- Use
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
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, 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 de importação alternativos:
- Importando arquivos
.unitypackage
no diretórioAssets/
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).
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 de versão do SDK subsequentes.
Opção 2 : Continue a usar os 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 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 de pacote importadas anteriormente deve ser tratada automaticamente pelo Gerenciador de dependência externa (que é incluído automaticamente quando você importa os
.unitypackages
do Firebase).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 um .tgz
. Esta importação substituirá automaticamente a versão anterior.