Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Desarrollo en Android

Los dispositivos Android te permiten ejecutar libremente tus propias apps en ellos. Es muy fácil crear una versión de tu juego y copiarla a un dispositivo Android. Este manual explica los pasos necesarios para crear un bundle de tu juego para Android. Durante el desarrollo, suele ser preferible ejecutar tu juego mediante la app de desarrollo, ya que te permite recargar contenido y código en caliente directamente en tu dispositivo.

Proceso de firmado de Android y Google Play

Android requiere que todos los APK estén firmados digitalmente con un certificado antes de que se instalen en un dispositivo o se actualicen. Si usas Android App Bundles, solo necesitas firmar tu app bundle antes de subirlo a Play Console, y Play App Signing se encarga del resto. Sin embargo, también puedes firmar manualmente tu app para subirla a Google Play, a otras tiendas de apps y para distribuirla fuera de cualquier tienda.

Cuando creas un bundle de aplicación Android desde el editor Defold o desde la herramienta de línea de comando, puedes proporcionar un keystore (que contiene tu certificado y clave) y la contraseña del keystore, que se usarán al firmar tu aplicación. Si no lo haces, Defold genera un keystore de depuración y lo usa al firmar el bundle de la aplicación.

Nunca debes subir tu aplicación a Google Play si se firmó con un keystore de depuración. Usa siempre un keystore dedicado que hayas creado tú mismo.

Crear un keystore

Defold usa un keystore para el proceso de firmado de Android. Hay más información disponible en esta publicación del foro.

Puedes crear un keystore usando Android Studio o desde una terminal/símbolo del sistema:

keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125

Esto creará un archivo keystore llamado mykeystore.keystore que contiene una clave y un certificado. El acceso a la clave y al certificado estará protegido por la contraseña 5Up3r_53cR3t. La clave y el certificado serán válidos durante 25 años (9125 días). La clave y el certificado generados se identificarán con el alias myAlias.

Asegúrate de guardar el keystore y la contraseña asociada en un lugar seguro. Si firmas y subes tus aplicaciones a Google Play por tu cuenta y se pierde el keystore o la contraseña del keystore, no tendrás forma de actualizar la aplicación en Google Play. Puedes evitar esto usando Google Play App Signing y dejando que Google firme tus aplicaciones por ti.

Crear un bundle de aplicación Android

El editor te permite crear fácilmente un bundle de aplicación independiente para tu juego. Antes de crear el bundle, puedes especificar qué iconos usar para la app, definir el código de versión, etc. en el archivo de configuración del proyecto game.project.

Para crear el bundle, selecciona Project ▸ Bundle... ▸ Android Application... en el menú.

Si quieres que el editor cree automáticamente certificados de depuración aleatorios, deja vacíos los campos Keystore y Keystore password:

Firmado de bundle Android

Si quieres firmar tu bundle con un keystore concreto, especifica Keystore y Keystore password. Se espera que Keystore tenga la extensión de archivo .keystore, mientras que se espera que la contraseña esté almacenada en un archivo de texto con la extensión .txt. También es posible especificar una Key password si la clave del keystore usa una contraseña distinta de la del propio keystore:

Firmado de bundle Android

Defold permite crear archivos APK y AAB. Selecciona APK o AAB en el menú desplegable Bundle Format.

Pulsa Create Bundle cuando hayas configurado las opciones del bundle de la aplicación. Luego se te pedirá que especifiques en qué lugar de tu computadora se creará el bundle.

Archivo de paquete de aplicación Android

Variantes de build

Cuando creas un bundle de un juego, debes elegir qué tipo de motor quieres usar. Tienes tres opciones básicas:

  • Debug
  • Release
  • Headless

Estas diferentes versiones también se denominan Build variants.

Cuando eliges Project ▸ Build, siempre obtendrás la versión de depuración.

Debug

Este tipo de ejecutable se usa normalmente durante el desarrollo de un juego, ya que incluye varias funcionalidades útiles de depuración:

  • Profiler - Se usa para recopilar contadores de rendimiento y uso. Aprende cómo usar el profiler en el manual de profiling.
  • Logging - El motor registrará información del sistema, advertencias y errores cuando el logging esté habilitado. El motor también generará logs desde la función Lua print() y desde el logging de extensiones nativas que use dmLogInfo(), dmLogError() y similares. Aprende cómo leer estos logs en el manual de logs del juego y del sistema.
  • Hot reload - Hot-reload es una funcionalidad potente que permite a un desarrollador recargar recursos mientras el juego se está ejecutando. Aprende cómo usarla en el manual de Hot-Reload.
  • Servicios del motor - Es posible conectarse a una versión de depuración de un juego e interactuar con ella mediante varios puertos TCP abiertos y servicios. Los servicios incluyen la funcionalidad hot-reload, acceso remoto a logs y el profiler mencionado antes, además de otros servicios para interactuar de forma remota con el motor. Aprende más sobre los servicios del motor en la documentación para desarrolladores.

Release

Esta variante tiene las funcionalidades de depuración deshabilitadas. Esta opción debe elegirse cuando el juego esté listo para publicarse en la tienda de aplicaciones o compartirse con jugadores por otros medios. No se recomienda publicar un juego con las funcionalidades de depuración habilitadas por varias razones:

  • Las funcionalidades de depuración ocupan un poco de espacio en el binario, y es una buena práctica intentar mantener el tamaño del binario de un juego publicado lo más pequeño posible.
  • Las funcionalidades de depuración también consumen un poco de tiempo de CPU. Esto puede afectar el rendimiento del juego si un usuario tiene hardware de gama baja. En teléfonos móviles, el aumento del uso de CPU también contribuirá al calentamiento y al consumo de batería.
  • Las funcionalidades de depuración pueden exponer información sobre el juego que no está destinada a los jugadores, ya sea desde una perspectiva de seguridad, trampas o fraude.

Headless

Este ejecutable se ejecuta sin gráficos ni sonido. Esto significa que puedes ejecutar las pruebas unitarias o de humo del juego en un servidor de CI, o incluso usarlo como servidor de juego en la nube.

Instalar un bundle de aplicación Android

Instalar un APK

Un archivo .apk se puede copiar a tu dispositivo con la herramienta adb, o a Google Play mediante la consola para desarrolladores de Google Play.

La herramienta de línea de comando adb es un programa fácil de usar y versátil que se utiliza para interactuar con dispositivos Android. Puedes descargar e instalar adb como parte de Android SDK Platform-Tools, para Mac, Linux o Windows.

Descarga Android SDK Platform-Tools desde: https://developer.android.com/studio/releases/platform-tools. Encontrarás la herramienta adb en /platform-tools/. Como alternativa, se pueden instalar paquetes específicos de cada plataforma mediante los respectivos gestores de paquetes.

En Ubuntu Linux:

$ sudo apt-get install android-tools-adb

En Fedora 18/19:

$ sudo yum install android-tools

En macOS (Homebrew)

$ brew cask install android-platform-tools

Puedes verificar que adb funciona conectando tu dispositivo Android a tu computadora mediante USB y ejecutando el siguiente comando:

$ adb devices
List of devices attached
31002535c90ef000    device

Si tu dispositivo no aparece, verifica que hayas habilitado USB debugging en el dispositivo Android. Abre Settings del dispositivo y busca Developer options (o Development).

Habilitar USB debugging

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
  pkg: /data/local/tmp/my_app.apk
Success

Instalar un APK usando el editor

Puedes instalar y ejecutar un archivo .apk usando las casillas “Install on connected device” y “Launch installed app” del editor en el diálogo Bundle:

Instalar y ejecutar APK

Para que esta funcionalidad funcione, necesitarás tener ADB instalado y USB debugging activado en el dispositivo conectado. Si el editor no puede detectar la ubicación de instalación de la herramienta de línea de comando ADB, tendrás que especificarla en Preferences.

Instalar un AAB

Un archivo .aab se puede subir a Google Play mediante la consola para desarrolladores de Google Play. También es posible generar un archivo .apk a partir de un archivo .aab para instalarlo localmente usando Android bundletool.

Permisos

El motor Defold requiere varios permisos para que funcionen todas sus funcionalidades. Los permisos se definen en AndroidManifest.xml, especificado en el archivo de configuración del proyecto game.project. Puedes leer más sobre los permisos de Android en la documentación oficial. En el manifiesto predeterminado se solicitan los siguientes permisos:

android.permission.INTERNET y android.permission.ACCESS_NETWORK_STATE (Nivel de protección: normal)

Permite que las aplicaciones abran sockets de red y accedan a información sobre redes. Estos permisos son necesarios para el acceso a internet. (Documentación oficial de Android) y (documentación oficial de Android).

android.permission.WAKE_LOCK (Nivel de protección: normal)

Permite usar PowerManager WakeLocks para evitar que el procesador entre en suspensión o que la pantalla se atenúe. Este permiso es necesario para evitar temporalmente que el dispositivo entre en suspensión mientras recibe una notificación push. (Documentación oficial de Android)

Usar AndroidX

AndroidX es una mejora importante respecto a la Android Support Library original, que ya no se mantiene. Los paquetes AndroidX sustituyen por completo a la Support Library al ofrecer paridad de funcionalidades y nuevas bibliotecas. La mayoría de las extensiones Android en el Asset Portal son compatibles con AndroidX. Si no quieres usar AndroidX, puedes desactivarlo explícitamente en favor de la antigua Android Support Library marcando Use Android Support Lib en el manifiesto de la aplicación.

FAQ

Q: ¿Es posible ocultar las barras de navegación y de estado en Android?

A: Sí, define la opción immersive_mode en la sección Android de tu archivo game.project. Esto permite que tu app ocupe toda la pantalla y capture todos los eventos touch de la pantalla.

Q: ¿Por qué obtengo “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]” al instalar un juego Defold en un dispositivo?

A: Android detecta que intentas instalar la app con un certificado nuevo. Al crear builds de depuración, cada build se firma con un certificado temporal. Desinstala la app anterior antes de instalar la nueva versión:

$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
      pkg: /data/local/tmp/Defold examples.apk
Success

Q: ¿Por qué obtengo errores sobre propiedades en conflicto en AndroidManifest.xml al crear una build con ciertas extensiones?

A: Esto puede ocurrir cuando dos o más extensiones proporcionan un stub de Android Manifest que contiene la misma etiqueta de propiedad, pero con valores distintos. Esto ha ocurrido, por ejemplo, con Firebase y AdMob. El error de build tiene un aspecto similar a este:

SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.

Puedes leer más sobre el problema y la solución temporal en el issue de Defold reportado #9453 y el issue de Google #327696048.