Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Solución de problemas y preguntas frecuentes para Unity y Firebase

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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:

  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, 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 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 .

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:

    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 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, 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 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).