Preguntas frecuentes y solución de problemas de Unity y Firebase

En esta página, se ofrecen sugerencias y solución de problemas específicos de Unity que pueden ocurrir mientras usas Firebase.

¿Tienes otras dificultades o tu problema no se describe en esta página? Asegúrate de consultar las Preguntas frecuentes principales de Firebase para obtener más información general o específica sobre Firebase.

Un error en el archivo dex único mientras se compila la app para Android

Cuando compilas una app para Android, es posible que experimentes una falla de compilación relacionada con un archivo dex único. El mensaje de error es similar al siguiente, si el proyecto está configurado para usar el sistema de compilación de Gradle.

Cannot fit requested classes in a single dex file.

Los archivos Dalvik Executable (.dex) se usan para contener un conjunto de definiciones de clase y sus datos adjuntos asociados de aplicaciones para 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 de tu proyecto supera este límite.

Unity agregó la reducción en su versión 2017.2, que usa ProGuard (y otras herramientas en algunas versiones de Unity) para quitar el código que no se utiliza, lo que puede reducir la cantidad total de métodos de referencia en un solo archivo dex. Esta opción se encuentra en Player Settings > Android > Publishing Settings > Minify. Las opciones pueden variar en distintas versiones de Unity, así que consulta 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 muchas formas de lograrlo en Unity:

  • Si Custom Gradle Template en Player Settings está habilitado, modifica mainTemplate.gradle.
  • Si usas Android Studio para compilar el proyecto exportado, modifica el archivo build.gradle de nivel de módulo.

Puedes encontrar más información en la guía del usuario de multidex.

Problemas relacionados con la compilación para Android con minSdkVersion 23

Cuando compilas para Android, si te orientas a minSdkVersion 23, es posible que falle en el paso de dexing, por lo general, en la tarea de Gradle ':launcher:mergeExtDexDebug', que dirá que no se pudo transformar una de las bibliotecas de Android. Esto se debe a un error en la herramienta dex predeterminada del SDK de Android que usan la mayoría de los editores de Unity y se puede corregir de varias maneras:

  • Establece minSdkVersion en 24.
  • Activa la reducción para Android en Player Settings > Android > Publishing Settings > Minify.
  • Agrega lo siguiente a tu archivo settingsTemplate.gradle para especificar una versión diferente de la herramienta dex:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

Problemas relacionados con la compilación para iOS con CocoaPods

Cuando realices compilaciones para iOS, es posible que falle la instalación de CocoaPods debido a un error relacionado con la configuración regional del idioma o la codificación UTF-8. Actualmente, existen varias formas de solucionar el problema.

  • Desde la terminal, ejecuta pod install directamente y abre el archivo xcworkspace resultante.

  • Cambia la versión de CocoaPods a la 1.10.2. El problema solo existe en la versión 1.11 y en las posteriores.

  • En tu ~/.bash_profile o equivalente, agrega 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. A continuación, se muestran los dos métodos de importación alternativos:

  • Importa archivos .unitypackage en el directorio Assets/ de tu proyecto
  • Importa con Unity Package Manager (UPM)
    • Esta es la forma recomendada de administrar paquetes en Unity 2018.4+.
    • Usa este método para facilitar las futuras actualizaciones de versiones y limpiar tu directorio Assets/.

En tu proyecto de Unity, solo debes usar un método de importación para administrar todos tus paquetes de Firebase. Las siguientes instrucciones no solo pueden usarse para actualizar la versión de paquetes individuales, sino también para migrar la administración de paquetes a UPM (el método de importación recomendado) si es necesario.

Si los paquetes de Firebase se encuentran en el directorio Assets/, tienes dos opciones para actualizar la versión del SDK:

  • Opción 1 (recomendada): Migra para usar UPM (disponible en Unity 2018.4+)

  • Opción 2: Sigue usando los archivos .unitypackage para importarlos al directorio Assets/

    1. Importa cada uno de los paquetes para la versión actualizada.

      Si descargas firebase_unity_sdk.zip desde el sitio web de Firebase, asegúrate de importar todos los .unitypackages de la carpeta dotnet correcta.

      • Si usas Unity 2019 o una versión posterior, importa desde la carpeta dotnet4.
      • De lo contrario, selecciona Scripting Runtime Version en Player Settings y, si está configurada en “.NET 3.x”, impórtala desde la carpeta dotnet3.
    2. External Dependency Manager (que se incluye automáticamente cuando importas .unitypackages de Firebase) debería encargarse automáticamente del reemplazo de las versiones de paquetes importadas previamente.

      Sin embargo, en caso de que este proceso no se haga de forma automática (y solo en ese caso), deberás borrar manualmente las siguientes carpetas y 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, importa la versión más reciente del SDK como .tgz. Esta importación reemplazará automáticamente la versión anterior.