Compila un Android App Bundle
Los nombres de menú de abajo son de Unity 6, que usa File → Build Profiles. En Unity 2022 y anteriores, las mismas opciones están en File → Build Settings.
Cambia a Android
Abre File → Build Profiles, selecciona Android (instala el módulo con Unity Hub si falta) y conviértelo en el perfil activo con Switch Profile.
Define el nombre de paquete
En Edit → Project Settings → Player → Android, en Other Settings → Identification, configura el nombre de paquete. No se puede cambiar después de la primera subida.
Elige IL2CPP y ARM64
En Configuration, pon Scripting Backend en IL2CPP y activa ARM64 en Target Architectures. Google Play exige código nativo de 64 bits y ARM64 solo está disponible con IL2CPP.
Activa el bundle
De vuelta en el perfil de build, marca Build App Bundle (Google Play) (visible mientras Export Project está desactivado) y comprueba que Development Build está desactivado.
Compila
Haz clic en Build, elige un nombre de archivo y Unity escribe el
.aab.
¿Compilas en CI? Los mismos ajustes están disponibles desde un script de editor, que además hace imposible olvidar subir el código de versión:
using UnityEditor;
public static class ReleaseBuild
{
[MenuItem("Build/Android App Bundle")]
public static void Build()
{
PlayerSettings.Android.bundleVersionCode += 1;
EditorUserBuildSettings.buildAppBundle = true;
BuildPipeline.BuildPlayer(new BuildPlayerOptions
{
scenes = new[] { "Assets/Scenes/Main.unity" },
locationPathName = "Builds/game.aab",
target = BuildTarget.Android,
options = BuildOptions.None,
});
}
}Keystore y firma de aplicaciones de Play
Sin tu propio keystore, Unity firma con una clave de debug y Play Console rechaza los bundles firmados en debug. Crea uno en el editor:
Abre el Keystore Manager
Ve a Edit → Project Settings → Player → Android → Publishing Settings y abre Keystore Manager.
Crea el keystore
Elige Keystore → Create New, guarda el archivo (donde quieras o en tu carpeta de keystores), pon una contraseña y añade una clave con un alias.
Úsalo en los builds
De vuelta en Publishing Settings, selecciona el keystore y el alias de la clave e introduce las contraseñas.
Este keystore es tu clave de subida. En la primera subida, Play Console configura la firma de aplicaciones de Play y Google guarda la clave de firma de la app. Haz copia del archivo y de las dos contraseñas fuera del proyecto; perder la clave de subida obliga a pedir un restablecimiento en Play Console.
Bundle Version Code y Target API Level
En Player → Other Settings → Identification, Version es lo que ven los jugadores y Bundle Version Code es el entero que compara Google. Sube el Bundle Version Code antes de cada build que vayas a subir; Play Console rechaza los códigos repetidos.
Al lado está Target API Level. Desde el 31 de agosto de 2026, las apps nuevas y las actualizaciones deben apuntar a Android 16 (nivel de API 36). En el modo automático, Unity usa el SDK más alto que tenga instalado; comprueba que sea al menos 36. Las versiones antiguas del editor pueden no admitir el nivel más reciente; en ese caso, actualiza Unity antes de la prueba, no durante.
Trampas de Unity
- Build con Mono. Mono no puede generar ARM64. Play Console marca entonces la versión por no cumplir el requisito de 64 bits. Cambia a IL2CPP con ARM64.
- Development Build activado. Los builds de desarrollo son más lentos, muestran una marca de agua de desarrollo y pueden marcarse como depurables, algo que Play Console rechaza.
- SDK antiguos de anuncios y analítica. Los SDK de terceros desactualizados traen bibliotecas nativas y permisos antiguos. Actualízalos antes de probar: Play Console avisa de las bibliotecas que no admiten páginas de memoria de 16 KB y, a partir del 1 de febrero de 2027, no se podrán publicar actualizaciones sin esa compatibilidad.
- Bundle demasiado grande. Si la subida falla por tamaño, activa Split Application Binary para que Unity mueva los recursos a paquetes de Play Asset Delivery en lugar del módulo base.
- Minify rompe plugins. La minificación en release puede eliminar clases Java que los plugins cargan por nombre. Añade reglas de conservación o prueba la release minificada en un dispositivo antes de subirla.
- Olvidar el código de versión. La segunda subida con el mismo Bundle Version Code falla. Automatiza el incremento o añádelo a tu lista de comprobación de release.
Símbolos de fallos nativos para builds IL2CPP
Cuando un juego de Unity falla en el teléfono de un tester, el stack trace apunta a libil2cpp, libunity o libmain. Sin símbolos, Play Console solo muestra direcciones en bruto, y Google Play no simboliza los fallos que llegaron antes de que subieras los símbolos. Configúralo antes de la primera versión cerrada, no después del primer fallo.
Activa los símbolos
En File → Build Profiles → Android, pon Debug Symbols en Public. Los símbolos públicos solo contienen la tabla de símbolos, suficiente para nombres de función legibles y con un archivo pequeño. Debugging añade toda la información de depuración para conectar un depurador nativo en local.
Elige cómo llegan a Google
Elige .zip para obtener un paquete con un nombre como
MyApp-0.1-v100-IL2CPP.symbols.zipque subes tú, o incrusta los símbolos en el bundle para que se suban con el.aab. En un script de build, el fragmento de abajo hace lo segundo.Empareja símbolos y versiones
Los símbolos pertenecen a un único Bundle Version Code. Si subes el zip a mano, hazlo en el Explorador de app bundles de Play Console, en la pestaña Descargas de esa versión, antes de que los testers la instalen.
// Public symbols, embedded in the .aab so they upload with it
UserBuildSettings.DebugSymbols.level = DebugSymbolLevel.SymbolTable;
UserBuildSettings.DebugSymbols.format = DebugSymbolFormat.IncludeInBundle;Si un plugin nativo trae un archivo de símbolos aparte, selecciónalo en el Inspector y pon Shared Library Type en Symbol con la CPU correspondiente. Debe llamarse igual que la biblioteca y estar en una carpeta separada.
Play Console en breve: de la prueba cerrada a producción
En cuanto tu bundle de Unity esté compilado y firmado, el resto ocurre en Play Console y funciona igual con cualquier framework. Esta es la lista de comprobación; cada menú y cada pantalla están en la guía completa de Play Console.
- Termina la configuración de la app en el Panel: política de privacidad, acceso a la app, anuncios, clasificación de contenido, público objetivo, seguridad de los datos y ficha de Play Store.
- Crea una versión de prueba cerrada en Probar y publicar → Pruebas → Prueba cerrada: elige los países de tus testers, sube el
.aaby envíalo a revisión. - Añade testers con un Google Group en la pestaña Testers y comparte el enlace de opt-in. Funciona en cuanto el canal muestra Publicado.
- Mantén al menos 12 testers con opt-in durante 14 días seguidos. Las pruebas internas no cuentan, y quien sale y vuelve empieza sus 14 días de nuevo.
- Publica al menos una actualización durante la prueba y apunta qué encontraron los testers y qué cambiaste.
- Solicita acceso a producción desde el Panel y responde las tres secciones sobre tu prueba, tu app y tu preparación. La decisión es de Google; nadie puede garantizar la aprobación.
Cuenta con bajas: recluta más de 12 testers para que una baja no retrase tu calendario. Ver todos los pasos de Play Console.
La guía completa de Play Console
Canal cerrado, Google Group y enlace de opt-in, la regla de 12 testers / 14 días y la solicitud de producción, paso a paso en una sola página.
Itera rápido sin romper la prueba
En Unity: sube Bundle Version Code, vuelve a compilar el .aab y súbelo al mismo canal cerrado. Basta con un pequeño arreglo publicado a mitad de la prueba.
En tus propios dispositivos, Build and Run instala el juego en el teléfono elegido en Run Device; una vez fijada la ruta de salida, Ctrl+B (macOS: Cmd+B) lo repite. El application patching de Unity acorta los builds de debug en tu dispositivo, pero no entrega nada a los testers: ellos siempre necesitan un .aab nuevo en el canal cerrado.
- Las contraseñas no se guardan. Unity no almacena en disco las contraseñas del keystore ni de la clave, así que las vuelves a escribir tras cada reinicio del Editor. Para builds de CI repetibles, defínelas en el script de build del Editor, junto al aumento del código de versión de la sección de build.
- Vigila el tamaño. Google Play limita el módulo base a 500 MB de descarga comprimida. Los juegos más grandes necesitan paquetes de recursos con Play Asset Delivery; los módulos y los paquetes install-time juntos pueden llegar a 4 GB.
- Recompila tras actualizar lo nativo. El Editor muestra un aviso al compilar por cada
.soalineado a 4 KB en lugar de 16 KB. Actualiza a la última versión de parche de tu Editor y de paquetes nativos como Burst, y recompila antes de la próxima subida. - Mantén estable la versión del Editor. Cambiar de versión de Unity a mitad de la prueba cambia las bibliotecas del motor que ejecutan los testers. Fija la versión durante los 14 días, salvo que un fallo obligue a actualizar.
Preguntas frecuentes
¿Puedo probar en un emulador de Android antes de subir?
Unity no admite emuladores de Android. Prueba en un dispositivo físico; Unity Remote ayuda con la entrada y el Device Simulator con el diseño de pantalla, pero ninguno sustituye un build de release en un teléfono real.
¿A qué niveles de API puede apuntar Unity 6?
La página de requisitos de Android de Unity para las versiones recientes de Unity 6 dice que puedes apuntar a los niveles de API 35 y 36, y Google Play exige 36 para apps nuevas y actualizaciones. La versión mínima compatible es Android 8.0 (nivel de API 26).
¿De verdad necesito IL2CPP?
Para Google Play, en la práctica sí: solo IL2CPP compila ARM64, y Google Play exige código nativo de 64 bits. IL2CPP es además lo que genera los símbolos de libil2cpp para informes de fallos legibles.
¿Por qué algunos testers no pueden abrir el juego?
Unity 6 necesita OpenGL ES 3.1 o Vulkan; OpenGL ES 3.0 y anteriores no son compatibles. Deja Vulkan activado y di a los testers el requisito mínimo antes de que hagan opt-in, para no perderlos el primer día.
Fuentes
Los detalles técnicos se han comprobado con la documentación oficial de abajo. Los menús y los valores por defecto cambian entre versiones; ante la duda, manda la página oficial.
- Unity Manual: Android build process
- Unity Manual: Android Player settings
- Unity Manual: Create a new keystore
- Android Developers: Target API level requirements
- Android Developers: Support 16 KB page sizes
- Unity Manual: Android symbols
- Unity Manual: Android requirements and compatibility
- Play Console Help: Download and install size limits
- Play Console Help: App testing requirements for new personal developer accounts
- Play Console Help: Set up an open, closed, or internal test
- Play Console Help: Deobfuscate or symbolicate crash stack traces
¿Es tu primera vez con la regla de los 12 testers?
La guía general explica el requisito de Google, cómo avanza día a día una campaña de TestBunny y qué podemos y qué no podemos garantizar.
Leer la guía general