Esta página ofrece sugerencias y solución de problemas específicos de Unity que puedes 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 opción de compilación experimental en Unity 2017 y versiones posteriores. Los complementos de Firebase utilizan componentes del SDK de Parse 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 es incompatible con la versión de .NET habilitada en su proyecto, verá errores de compilación de algunos tipos en el marco de .NET que implementa el SDK de Parse.
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, navegue hasta Activos > Play Services Resolver > 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 opción de compilación experimental en Unity 2017 y versiones posteriores. Los complementos de Firebase utilizan componentes del SDK de Parse 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 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 los archivos DLL de reenvío de tipos, 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 ninguna solución alternativa 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 utilizando la pila de redes .NET. La funcionalidad TLS no funciona en Unity 2017.2 cuando se usa .NET 4.6, lo que provoca que el complemento Realtime Database falle en los editores y en el escritorio.
No existe ninguna solución para este problema, por lo que debe utilizar 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, para que el SDK de Firebase pueda usarla 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 utiliza 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 crear una aplicación para Android
Mientras crea una aplicación para Android, es posible que encuentre un error de compilación relacionado con tener un único 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 clases y sus datos adjuntos asociados para aplicaciones de Android ( .apk
). Un único archivo dex está limitado a hacer 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 utiliza 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 .
Soporte y eliminación de azúcar de Java 8 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 en 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 superior), es posible que veas 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 a las compilaciones de Android en Unity 2017 y Unity 2018 únicamente. 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 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 superior.
Consulte también Solución de problemas de Android: eliminación de errores de compilación .
Problemas al compilar para iOS con Cocoapods
Al compilar para iOS, la instalación de Cocoapod puede fallar con un error sobre el idioma o la codificación UTF-8. Actualmente existen varias formas diferentes de solucionar el problema.
Desde la terminal, ejecute
pod install
directamente y abra el archivo xcworkspace resultante.Degradar la versión de Cocoapods a 1.10.2. El problema existe sólo 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 utilizando el Administrador de paquetes de Unity (UPM)
- Esta es la forma recomendada de administrar paquetes en Unity 2018.4+.
- Utilice este método para facilitar las actualizaciones de versiones futuras y hacer que su directorio
Assets/
esté más limpio.
En tu proyecto de Unity, solo debes usar un método de importación para administrar todos tus paquetes de Firebase. Las instrucciones a continuación se pueden utilizar no solo para actualizar la versión de 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/
, tienes 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 al facilitar las actualizaciones posteriores de la versión del SDK.
Opción 2 : continuar usando archivos
.unitypackage
para importarlos al directorioAssets/
Importe cada uno de los paquetes para la versión actualizada.
Si descarga firebase_unity_sdk.zip del sitio web de Firebase, asegúrese de importar todos
.unitypackages
de la carpetadotnet
correcta.- Si está utilizando 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 está utilizando Unity 2019 o posterior, importe desde la carpeta
La sobrescritura de las versiones de paquetes importadas previamente debe ser manejada automáticamente por el Administrador de Dependencia Externa (que se incluye automáticamente cuando importa Firebase
.unitypackages
).Sin embargo, si y SÓLO 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.