Esta página ofrece sugerencias y solución de problemas específicos de Unity que puede encontrar al usar Firebase.
¿Tiene otros desafíos o no ve su problema descrito a continuación? Asegúrese de consultar las preguntas frecuentes principales de Firebase para obtener más preguntas frecuentes sobre Firebase o específicas del producto.
Compatibilidad con .NET al usar Unity 2017.x y versiones posteriores
Firebase admite .NET 4.x como una opción de compilación experimental en Unity 2017 y versiones posteriores. Los complementos de Firebase usan componentes del Parse SDK para proporcionar algunas clases de .NET 4.x en versiones anteriores de .NET.
Por lo tanto, la versión 5.4.0
y posteriores del SDK de Firebase Unity proporcionan complementos que son compatibles con .NET 3.x o .NET 4.x en los directorios dotnet3
y dotnet4
del SDK de Firebase Unity.
Si importa un complemento de Firebase que no es compatible con la versión .NET habilitada en su proyecto, verá errores de compilación de algunos tipos en el marco .NET que implementa Parse SDK.
Para resolver el error de compilación, si está utilizando .NET 3.x:
- Elimine o deshabilite las siguientes DLL para todas las plataformas:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- Habilite las siguientes DLL para todas las plataformas:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
Para resolver el error de compilación, si está utilizando .NET 4.x:
- Elimine o deshabilite las siguientes DLL para todas las plataformas:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- Habilite las siguientes DLL para todas las plataformas:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
Si importa otro complemento de Firebase:
- En su proyecto de Unity, vaya a Activos > Resolver servicios de reproducción > Controlador de versiones > Actualizar para habilitar las DLL correctas para su proyecto.
Compilación de Unity 2017.1 IL2CPP en proyectos .NET 4.x
Firebase admite .NET 4.x como una opción de compilación experimental en Unity 2017 y versiones posteriores. Los complementos de Firebase usan componentes del Parse SDK para proporcionar algunas clases de .NET 4.x en versiones anteriores de .NET.
Por lo tanto, el SDK de Firebase Unity versión 5.4.0 y posteriores proporciona archivos DLL de reenvío de tipos que reenvían tipos de Parse (por ejemplo, la implementación de Parse de System.Threading.Tasks.Task
) al marco .NET. Desafortunadamente, IL2CPP (un transpilador que convierte C# a C++) que se incluye en Unity 2017.1.x no procesa correctamente las DLL de reenvío de tipo, lo que genera errores de compilación similares a los siguientes:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
Actualmente no hay una solución disponible para los errores de compilación de .NET 4.x IL2CPP en Unity 2017.1, por lo que debe actualizar a Unity 2017.2 o posterior para usar .NET 4.x en proyectos compilados con IL2CPP.
Unidad 2017.2 redes
Firebase Realtime Database crea conexiones de red TLS mediante la pila de red .NET. La funcionalidad TLS se interrumpe en Unity 2017.2 cuando se usa .NET 4.6, lo que hace que el complemento Realtime Database falle en los editores y en el escritorio.
No existe una solución para este problema, por lo que debe usar una versión diferente de Unity, por ejemplo, la versión 2017.1 o 2017.3.
Falta el archivo de configuración de Firebase Android en Unity 2020
Para admitir versiones de Unity que no tienen la capacidad de personalizar la compilación de Gradle, la herramienta de edición de Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml
como un recurso de Android para empaquetar en un Compilación de Android, de modo que el SDK de Firebase pueda usarlo para inicializar la instancia predeterminada de FirebaseApp.
En Unity 2020, todos los recursos de Android deben estar en directorios con el sufijo .androidlib
. Si su proyecto usa un SDK de Firebase que genera un directorio Assets/Plugins/Android/Firebase
, cámbiele el nombre a Assets/Plugins/Android/Firebase.androidlib
. Asegúrese de que contenga AndroidManifest.xml
, project.properties
y res/values/google-services.xml
.
Un problema con single dex al construir la aplicación de Android
Al compilar una aplicación de Android, es posible que encuentre una falla de compilación relacionada con tener un solo archivo dex. El mensaje de error es similar al siguiente, si su proyecto está configurado para usar el sistema de compilación Gradle.
Cannot fit requested classes in a single dex file.
Los archivos Dalvik Executable ( .dex
) se utilizan para contener un conjunto de definiciones de clase y sus datos adjuntos asociados para aplicaciones de Android ( .apk
). Un solo archivo dex se limita a la referencia a 65.536 métodos. La compilación fallará si la cantidad total de métodos de todas las bibliotecas de Android en su proyecto excede este límite.
Unity introdujo Minification en 2017.2, que usa Proguard (u otras herramientas en algunas versiones de Unity) para eliminar el código no utilizado, lo que puede reducir la cantidad total de métodos a los que se hace referencia en un solo archivo dex. La opción se puede encontrar en Configuración del reproductor > Android > Configuración de publicación > Minificar . Las opciones pueden diferir en diferentes versiones de Unity, así que consulte la documentación oficial de Unity.
Si la cantidad de métodos a los que se hace referencia aún excede el límite, otra opción es habilitar multidex
. Hay varias formas de lograr esto en Unity:
- Si
Custom Gradle Template
enPlayer Settings
está habilitada, modifiquemainTemplate.gradle
. - Si usa Android Studio para compilar el proyecto exportado, modifique el archivo
build.gradle
a nivel de módulo.
Se pueden encontrar más detalles en la guía del usuario de multidex .
Compatibilidad con Java 8 y desugaring para compilaciones de Android en Unity 2017 y Unity 2018 (Firebase Unity SDK 8.0.0 y superior)
En mayo de 2021 (Firebase BoM v28.0.0), Firebase deshabilitó la eliminación de azúcar para todas sus bibliotecas de Android (consulte la nota de la versión ). Al compilar una aplicación de Android con Firebase Unity SDK (8.0.0 y versiones posteriores), es posible que vea el siguiente error de compilación:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
Este cambio afecta únicamente a las compilaciones de Android en Unity 2017 y Unity 2018. Las versiones más recientes de Unity agregan el bloque compileOptions
de forma predeterminada en los archivos de compilación de gradle. Para corregir este error de compilación en Unity 2017 y Unity 2018, realice una de las siguientes acciones:
Agregue un bloque
compileOptions
a su plantilla de gradle:- Utilice
Gradle
como sistema de compilación. - Habilite
Custom Gradle Template
enPlayer Settings
. Agregue las siguientes líneas a
mainTemplate.gradle
(o nivel de módulobuild.gradle
si exporta un proyecto para Android Studio):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- Utilice
Alternativamente, aumente minSdkVersion para su proyecto de Android a 26 o más.
Consulte también Solución de problemas de Android: fallas de compilación de eliminación de azúcar .
Problemas al compilar para iOS con Cocoapods
Al compilar para iOS, la instalación de Cocoapod puede fallar con un error sobre la configuración regional del idioma o la codificación UTF-8. Actualmente hay varias formas diferentes de solucionar el problema.
Desde la terminal, ejecute
pod install
directamente y abra el archivo xcworkspace resultante.Rebaje la versión de Cocoapods a 1.10.2. El problema existe solo en la versión 1.11 y posteriores.
En su
~/.bash_profile
o equivalente, agregueexport LANG=en_US.UTF-8
Cómo actualizar la versión de los SDK de Firebase Unity
El proceso para actualizar las versiones de los SDK de Firebase Unity depende de cómo se importaron inicialmente. Estos son los dos métodos de importación alternativos:
- Importación de archivos
.unitypackage
en el directorioAssets/
de su proyecto - Importación mediante Unity Package Manager (UPM)
- Esta es la forma recomendada de administrar paquetes en Unity 2018.4+.
- Utilice este método para facilitar las futuras actualizaciones de versiones y limpiar su directorio
Assets/
.
En su proyecto de Unity, solo debe usar un método de importación para administrar todos sus paquetes de Firebase. Las instrucciones a continuación se pueden usar no solo para actualizar la versión de los paquetes individuales, sino también, si es necesario, para migrar la administración de paquetes a UPM (el método de importación recomendado).
Si los paquetes de Firebase están en el directorio Assets/
, tiene dos opciones para actualizar la versión del SDK:
Opción 1 (recomendada) : Migrar para usar UPM (disponible en Unity 2018.4+)
- Siga las instrucciones proporcionadas por Firebase para migrar la administración de paquetes a UPM .
- Si bien este método requiere más configuración inicial que continuar usando el flujo de trabajo
.unitypackage
, vale la pena en la facilidad de las actualizaciones posteriores de la versión SDK.
Opción 2 : Continúe usando archivos
.unitypackage
para importarlos al directorioAssets/
Importe cada uno de los paquetes para la versión actualizada.
Si descarga firebase_unity_sdk.zip desde el sitio web de Firebase, asegúrese de importar todos los
.unitypackages
de la carpetadotnet
correcta.- Si usa Unity 2019 o posterior, importe desde la carpeta
dotnet4
. - De lo contrario, seleccione Scripting Runtime Version en Player Settings y, si está configurado en ".NET 3.x", impórtelo desde la carpeta
dotnet3
.
- Si usa Unity 2019 o posterior, importe desde la carpeta
La sobrescritura de las versiones de paquetes previamente importadas debe ser manejada automáticamente por el Administrador de dependencias externas (que se incluye automáticamente cuando importa los
.unitypackages
de Firebase).Sin embargo, si y SOLO si este proceso automático falla, deberá eliminar manualmente las siguientes carpetas y luego volver a intentar el paso de importación anterior.
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Si UPM administra los paquetes de Firebase, importe la versión más reciente del SDK como .tgz
. Esta importación sobrescribirá automáticamente la versión anterior.