Solución de problemas y Preguntas frecuentes sobre Unity y Firebase

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:

  1. Elimine o deshabilite las siguientes DLL para todas las plataformas:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. 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:

  1. Elimine o deshabilite las siguientes DLL para todas las plataformas:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. 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 en Player Settings está habilitada, modifique mainTemplate.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:

    1. Utilice Gradle como sistema de compilación.
    2. Habilite Custom Gradle Template en Player Settings .
    3. Agregue las siguientes líneas a mainTemplate.gradle (o nivel de módulo build.gradle si exporta un proyecto para Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • 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, agregue export 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 directorio Assets/ 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).