Introducción
La siguiente es una guía para depurar el proceso de compilación y compilación de juegos de Unity utilizando el SDK de Firebase para Unity. Describe cómo investigar y resolver muchos de los problemas más comunes que puedes encontrar al configurar y crear tu juego para una nueva plataforma o después de una actualización. Está ordenado en orden de cuándo pueden ocurrir estos errores en el proceso. Consúltalos por orden y procede según se resuelva cada uno.
Además de este documento, consulte las preguntas frecuentes de Firebase for Unity para obtener más información.
Problemas de compilación del modo de reproducción
La primera clase de problemas de compilación puede ocurrir durante las pruebas en el editor antes de intentar iniciar una compilación móvil. Esta sección trata todos los errores de Firebase que ocurren antes y durante el modo de reproducción.
Cuando Unity inicia o detecta cambios en las dependencias, el código u otros activos, intentará reconstruir el proyecto. Si el proyecto no puede compilarse en ese momento, el editor registrará los errores de compilación en la consola y, si intenta ingresar al modo de reproducción, recibirá una ventana emergente de error en la pestaña Escena de Unity que dice All compiler errors have to be fixed before you can enter playmode!
.
Depurar problemas de compilación relacionados con Firebase
Tipos, clases, métodos y miembros faltantes
Muchos problemas de Firebase ocurren debido a la incapacidad del editor y compilador para encontrar los tipos, clases, métodos y miembros necesarios. Los síntomas comunes de esto son variantes de los siguientes:
The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'
Pasos de resolución:
Cuando utilice clases o métodos de Firebase en el código, asegúrese de que estén disponibles teniendo las directivas
using
correctas para los productos de Firebase específicos necesarios.Verifique que haya importado los paquetes de Firebase adecuados:
- Para importar los paquetes apropiados:
- Agregue Firebase Unity SDK como
.unitypackage
s o - Busque y realice una de las alternativas en Opciones adicionales de instalación de Unity .
- Agregue Firebase Unity SDK como
- Asegúrese de que todos los productos de Firebase en su proyecto y EDM4U :
- estan en la misma version
- Se instalaron como
.unitypackage
exclusivamente O exclusivamente a través de Unity Package Manager.
- Para importar los paquetes apropiados:
Si importó el SDK de Firebase Unity anterior a la versión "10.0.0" como
.unitypackage
s, el archivo zip del SDK de Firebase Unity contiene paquetes compatibles con .NET 3.x y .NET 4.x. Asegúrese de haber incluido solo el nivel de .NET Framework compatible en su proyecto:- La compatibilidad entre las versiones de Unity Editor y los niveles de .NET Frameworks se analiza en Agregar Firebase a su proyecto de Unity .
- Si importó accidentalmente sus paquetes de Firebase en el nivel de .NET Framework incorrecto o necesita cambiar de usar
.unitypackage
s a una de las opciones de instalación adicionales de Unity , la forma más limpia es eliminar todos los paquetes de Firebase mediante los métodos mencionados en esta sección de migración y luego vuelva a importar todos los paquetes de Firebase.
Comprueba que tu editor esté reconstruyendo tu proyecto y que tus intentos de reproducir reflejen el estado más actual de tu proyecto:
- De forma predeterminada, el editor de Unity está configurado para reconstruirse cada vez que se detectan cambios en los activos o la configuración.
- Es posible que esta funcionalidad se haya deshabilitado y que Unity Editor esté configurado para actualización/recompilación manual . Investigue esto e intente una actualización manual si este es el caso.
Errores de tiempo de ejecución del modo de reproducción
Si tu juego se inicia, pero tiene problemas con Firebase mientras se ejecuta, intenta lo siguiente:
Asegúrese de aprobar los paquetes de Firebase en "Seguridad y privacidad" en Mac OS
Si, al iniciar el juego en el editor de Mac OS, aparece un cuadro de diálogo que dice: "FirebaseCppApp-<versión>.bundle no se puede abrir porque no se puede verificar el desarrollador", debes aprobar ese archivo de paquete específico en Menú Seguridad y Privacidad de Mac.
Para hacerlo, haga clic en Icono de Apple > Preferencias del Sistema > Seguridad y Privacidad
En el menú de seguridad, aproximadamente a la mitad de la página, hay una sección que dice "Se bloqueó el uso de "FirebaseCppApp-<versión>.bundle" porque no proviene de un desarrollador identificado".
Haga clic en el botón denominado Permitir de todos modos .
Regrese a Unity y presione Reproducir nuevamente.
Luego verá una advertencia similar a la primera:
Presione Abrir y su programa podrá continuar; No se le volverá a preguntar sobre este archivo en particular.
Asegúrese de que su proyecto contenga y utilice archivos de configuración válidos
- Asegúrese de que la configuración de compilación esté configurada para el objetivo que desea (iOS o Android) en Archivo > Configuración de compilación . Para obtener una discusión más completa, lea la documentación de configuración de compilación de Unity .
- Descargue el archivo de configuración para su aplicación (
google-services.json
para Android oGoogleService-Info.plist
para iOS) y cree el objetivo desde Firebase console en Configuración del proyecto > Sus aplicaciones : si ya tiene estos archivos, elimínelos en su proyecto. y reemplácelos con la versión más reciente, asegurándose de que estén escritos exactamente como se muestra arriba, sin "(1)" u otros números adjuntos a los nombres de los archivos. - Si la consola contiene un mensaje sobre archivos en
Assets/StreamingAssets/
, asegúrese de que no haya mensajes en la consola que indiquen que Unity no pudo editar archivos allí. - Asegúrese de que se genere
Assets/StreamingAssets/google-services-desktop.json
y coincida con el archivo de configuración descargado.- Si no se genera automáticamente y
StreamingAssets/
no existe, cree manualmente el directorio en el directorioAssets
. - Compruebe si Unity ahora ha generado
google-services-desktop.json
.
- Si no se genera automáticamente y
Asegúrese de que todos los productos de Firebase y EDM4U se hayan instalado exclusivamente a través de .unitypackage
o Unity Package Manager
- Verifique la carpeta
Assets/
y el Administrador de paquetes de Unity para asegurarse de que los SDK de Firebase y EDM4U se instalaron mediante uno u otro método exclusivamente. - Algunos complementos desarrollados por Google , como Google Play, y complementos de terceros pueden depender de EDM4U. Esos complementos pueden incluir EDM4U en sus paquetes
.unitypackage
o Unity Package Manager (UPM). Asegúrese de que solo haya una copia de EDM4U en su proyecto. Si algún paquete de UPM depende de EDM4U, es mejor conservar solo las versiones de UPM de EDM4U, que se pueden encontrar en la página API de Google para Unity Archive .
Asegúrese de que todos los productos de Firebase en su proyecto tengan la misma versión.
- Si los SDK de Firebase se instalaron a través de
.unitypackage
, verifique si todas las bibliotecasFirebaseCppApp
enAssets/Firebase/Plugins/x86_64/
tienen la misma versión. - Si los SDK de Firebase se instalaron a través de Unity Package Manager (UPM), abra Windows > Administrador de paquetes , busque "Firebase" y asegúrese de que todos los paquetes de Firebase tengan la misma versión.
- Si su proyecto contiene diferentes versiones de los SDK de Firebase, le recomendamos que elimine todos los SDK de Firebase por completo antes de instalarlos nuevamente, esta vez con las mismas versiones. La forma más limpia es eliminar todos los paquetes de Firebase mediante los métodos mencionados en esta sección de migración .
Errores de compilación del dispositivo de destino y de resolución
Si su juego funciona en el editor (configurado para el objetivo de compilación apropiado de su elección), luego verifique que el Administrador de dependencia externa para Unity (EDM4U) esté configurado y funcionando correctamente.
El repositorio EDM4U GitHub contiene una guía paso a paso para esta parte del proceso que debes revisar y seguir antes de continuar.
Problemas y minificación de 'Single Dex' ( obligatorio si se usa Cloud Firestore)
Mientras crea una aplicación para Android, puede encontrar un error de compilación relacionado con tener un único 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 .dex
se utilizan para contener un conjunto de definiciones de clases y sus datos adjuntos asociados para aplicaciones de Android. Un único archivo dex está limitado a hacer referencia a 65.536 métodos; Las compilaciones fallarán si la cantidad total de métodos de todas las bibliotecas de Android en su proyecto excede este límite.
Los dos pasos siguientes se pueden aplicar secuencialmente; solo habilite multidex si la minificación no resuelve el problema.
Habilitar minificación
Unity introdujo Minification en 2017.2 para eliminar el código no utilizado, lo que puede reducir la cantidad total de métodos referenciados 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.
Habilitar multidex
Si, después de habilitar la minificación, la cantidad de métodos referenciados aún excede el límite, otra opción es habilitar multidex
. Hay varias formas de lograr esto en Unity:
- Si la plantilla Gradle personalizada en Configuración del reproductor 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 .
Comprender y corregir errores de tiempo de ejecución del dispositivo de destino
Si su juego funciona en el editor y puede compilarse e instalarse en su dispositivo de destino, pero encuentra errores de tiempo de ejecución, inspeccione e investigue los registros generados en el dispositivo .
Esta sección detalla cómo investigar sus registros en busca de posibles errores y uno de esos errores que solo ocurre en tiempo de ejecución en el dispositivo o simulador.
Androide
Simulador
- Inspeccione los registros que se muestran en la consola de su emulador o vea la ventana de Logcat .
Dispositivo
Familiarícese con adb y adb logcat y cómo usarlos.
- Si bien puede utilizar las diversas herramientas de su entorno de línea de comandos para filtrar la salida, considere, alternativamente, buscar en las opciones de logcat.
Una forma sencilla de iniciar una sesión de ADB desde cero es:
adb logcat -c && adb logcat <OPTIONS>
donde
OPTIONS
son los indicadores que pasa en la línea de comando para filtrar la salida.
Usando Logcat a través de Android Studio
Cuando se utiliza Logcat a través de Android Studio , hay disponibles herramientas de búsqueda adicionales que simplifican la generación de búsquedas productivas.
iOS
Inspeccionar registros
Si ejecuta un dispositivo físico, conéctelo a su computadora. Inspeccione lldb en Xcode.
Problemas rápidos
Si se encuentra con registros de errores que mencionan Swift, consulte la sección del Administrador de dependencias externas para Unity al respecto.
Pasos adicionales
Si tu juego aún tiene problemas de compilación, compilación o ejecución relacionados con Firebase, investiga la página de problemas del SDK de Firebase para Unity y considera presentar un nuevo problema. Además, consulte la página de soporte de Firebase para conocer opciones adicionales.