Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Esta página ofrece sugerencias y solución de problemas para 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 revisar el principal Firebase FAQ de Preguntas más pan-Firebase o productos específicos.

Compatibilidad con .NET cuando se usa Unity 2017.xy versiones posteriores

Firebase admite .NET 4.x como una opción de compilación experimental en Unity 2017 y versiones posteriores. Plugins firebase usan componentes del SDK Parse para proporcionar algunas clases .NET 4.x en versiones anteriores de .NET.

Por lo tanto, el SDK versión Firebase Unidad 5.4.0 y posteriores proporcionan plugins que son compatibles con cualquiera .NET o .NET 3.x 4.x en dotnet3 y dotnet4 directorios de la Unidad SDK Firebase.

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 implementados por 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 Unidad, navegar a Activos> Juego Servicios Resolver> Versión Handler> actualización para habilitar los archivos DLL adecuados para cada 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. Plugins firebase usan componentes del SDK Parse para proporcionar algunas clases .NET 4.x en versiones anteriores de .NET.

Por lo tanto, el SDK versión Firebase Unidad 5.4.0 y posterior proporciona DLL de reenvío de tipo que reenvían tipos parse (por ejemplo, de aplicación Parse de System.Threading.Tasks.Task ) para el marco .NET. Desafortunadamente, IL2CPP (un transpilador que convierte C # a C ++) que se envía en Unity 2017.1.x no procesa correctamente las 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 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.

Unity 2017.2 redes

Firebase Realtime Database crea conexiones de red TLS mediante la pila de redes .NET. La funcionalidad TLS se rompe 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 alternativa 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

Con el fin de versiones de apoyo de la Unidad que no tienen la posibilidad de personalizar la acumulación Gradle, la herramienta de editor de Firebase genera Assets/Plugins/Android/Firebase/res/values/google-services.xml como un recurso Android para ser empaquetado en una Compilación de Android, de modo que el SDK de Firebase pueda usarlo para inicializar la instancia predeterminada de FirebaseApp.

En la Unidad de 2020, todos los recursos de Android deben estar en directorios con un .androidlib sufijo. Si su proyecto utiliza un SDK Firebase que genera una Assets/Plugins/Android/Firebase directorio, cambiar el nombre a Assets/Plugins/Android/Firebase.androidlib . Asegúrese de que contiene AndroidManifest.xml , project.properties y res/values/google-services.xml .

Un problema con dex único al crear una aplicación de Android

Mientras crea una aplicación de Android, puede encontrar un error de compilación relacionado 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.

Dalvik Ejecutable ( .dex ) archivos se utiliza para mantener un conjunto de definiciones de clases y sus datos adjuntos asociados para aplicaciones de Android ( .apk ). Un solo archivo dex se limita a hacer referencia a 65,536 métodos. La compilación fallará si el número total de métodos de todas las bibliotecas de Android en su proyecto excede este límite.

Unidad introdujo Minificación en 2017,2, que utiliza Proguard (u otras herramientas en algunas versiones de la Unidad) que se deben eliminar código no utilizado, que puede reducir el número total de los métodos de referencia en un solo archivo de dex. La opción se encuentra en Configuración del reproductor> Android> Publishing Configuración> Minimizar. Las opciones pueden diferir en diferentes versiones de Unity, así que consulte la documentación oficial de Unity.

Si el número de métodos que se hace referencia todavía supera el límite, otra opción es permitir multidex . Hay varias formas de lograr esto en Unity:

  • Si Custom Gradle Template bajo Player Settings está activado, modificar mainTemplate.gradle .
  • Si utiliza Android Studio para crear el proyecto exportado, modificar de nivel de módulo build.gradle archivo.

Más detalles se pueden encontrar en la guía del usuario 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 (lista de materiales Firebase v28.0.0), Firebase desugaring deshabilitado para todas sus bibliotecas Android (ver nota de lanzamiento ). Al compilar una aplicación de Android con Firebase Unity SDK (8.0.0 y superior), 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 solo afecta a las compilaciones de Android en Unity 2017 y Unity 2018. Las versiones más recientes de la Unidad añadir el compileOptions bloque por defecto en archivos de generación Gradle. Para corregir este error de compilación en Unity 2017 y Unity 2018, realice una de las siguientes acciones:

  • Añadir un compileOptions bloque a la plantilla Gradle:

    1. Utilice Gradle como el sistema de construcción.
    2. Habilitar Custom Gradle Template bajo Player Settings .
    3. Añadir las siguientes líneas a mainTemplate.gradle (o nivel de módulo build.gradle si la exportación de un proyecto para Android Studio):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • Alternativamente, aumente la minSdkVersion para su proyecto de Android a 26 o más.

Ver también la solución de problemas de Android - desugaring fallos de construcción .

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, existen varias formas diferentes de solucionar el problema.

  • Desde el terminal, ejecute pod install directamente, y abra el archivo xcworkspace resultante.

  • Baje 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, añadir export LANG=en_US.UTF-8