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.