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
enPlayer Settings
está habilitado, modificamainTemplate.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, agregaexport 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 directorioAssets/
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.
Paquetes importados como archivos .unitypackage
en el directorio Assets/
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+)
- Sigue las instrucciones de Firebase para migrar la administración de paquetes a UPM.
- Si bien este método requiere más configuración inicial que seguir usando el flujo de trabajo de
.unitypackage
, vale la pena facilitar las actualizaciones posteriores de la versión del SDK.
Opción 2: Sigue usando los archivos
.unitypackage
para importarlos al directorioAssets/
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 carpetadotnet
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
.
- Si usas Unity 2019 o una versión posterior, importa desde la carpeta
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
Paquetes administrados por UPM
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.