Compilando para Android

Ver también

Esta página describe cómo compilar binarios de plantillas de exportación de Android desde el código fuente. Si estás buscando exportar tu proyecto a Android, lee Exportación para Android.

Nota

En la mayoría de los casos, usar el desplegador incorporado y las plantillas de exportación es suficiente. Compilar el APK de Android manualmente es principalmente útil para compilaciones personalizadas o paquetes personalizados para el desplegador.

También es necesario seguir los pasos mencionados en el tutorial Exportación para Android antes de intentar construir una plantilla de exportación personalizada.

Requerimientos

Para compilar en Windows, Linux o macOS, se requiere lo siguiente:

  • Python 3.5+.

  • El sistema de construcción SCons 3.0+.

  • Android SDK (las herramientas de línea de comandos son suficiente).

    • Los componentes del SDK necesarios se instalarán automáticamente.

    • En Linux, no utilices un SDK de Android proporcionado por los repositorios de distribución, ya que a menudo estará desactualizado.

  • Gradle (se descargará e instalará automáticamente si falta).

  • JDK 11 (puede ser OpenJDK u Oracle JDK).

    • Puedes descargar una compilación desde ojdkbuild.

Ver también

Para obtener el código fuente de Godot para compilarlo, consulta la sección Consiguiendo el código fuente.

Para obtener una visión general del uso de SCons para Godot, consulta la sección Introducción al sistema de compilación.

Configurando el sistema de construcción

  • Establece la variable de entorno ANDROID_SDK_ROOT para que apunte al SDK de Android. Si descargaste las herramientas de línea de comandos de Android, esto sería la carpeta donde extrajiste el contenido del archivo ZIP.

  • Instala los componentes necesarios del SDK en esta carpeta:

    • Acepta las licencias de los componentes del SDK ejecutando el siguiente comando donde android_sdk_path es la ruta al SDK de Android y luego respondiendo todas las solicitudes con y:

    tools/bin/sdkmanager --sdk_root=<android_sdk_path> --licenses
    
    • Completa la configuración ejecutando el siguiente comando donde android_sdk_path es la ruta al SDK de Android.

    tools/bin/sdkmanager --sdk_root=<android_sdk_path> "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404"
    

Ver también

Para configurar la variable de entorno en Windows, presiona Windows + R, escribe "control system" y luego haz clic en Configuración avanzada del sistema en el panel izquierdo. A continuación, haz clic en Variables de entorno en la ventana que aparece.

Ver también

Para configurar la variable de entorno en Linux o macOS, utiliza el comando export ANDROID_SDK_ROOT=/ruta/al/android-sdk donde /ruta/al/android-sdk apunta a la raíz de los directorios del SDK.

Construyendo las plantillas de exportación

Godot necesita dos plantillas de exportación para Android: la plantilla optimizada "release" (android_release.apk) y la plantilla de depuración (android_debug.apk). Como Google requerirá que todos los APKs incluyan bibliotecas ARMv8 (64 bits) a partir de agosto de 2019, los comandos a continuación construirán un APK que contiene tanto bibliotecas ARMv7 como ARMv8.

La compilación de las plantillas de exportación estándar se realiza llamando a SCons desde el directorio raíz de Godot con los siguientes argumentos:

  • Release template (se utiliza al exportar con Debugging Enabled apagado)

scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

El APK resultante se ubicará en bin/android_release.apk.

  • Debug template (se utiliza cuando se exporta con Debugging Enabled encendido)

scons platform=android target=release_debug android_arch=armv7
scons platform=android target=release_debug android_arch=arm64v8
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

El APK resultante se ubicará en bin/android_debug.apk.

Añadir soporte para dispositivos x86

Si también deseas incluir soporte para dispositivos x86 y x86-64, ejecuta el comando SCons una tercera y cuarta vez con los argumentos android_arch=x86 y android_arch=x86_64, respectivamente, antes de construir el APK con Gradle. Por ejemplo, para la plantilla de lanzamiento (release):

scons platform=android target=release android_arch=armv7
scons platform=android target=release android_arch=arm64v8
scons platform=android target=release android_arch=x86
scons platform=android target=release android_arch=x86_64
cd platform/android/java
# On Windows
.\gradlew generateGodotTemplates
# On Linux and macOS
./gradlew generateGodotTemplates

Esto creará un binario universal que funciona en todas las plataformas. El tamaño final del APK de los proyectos exportados dependerá de las plataformas que elijas para soportar al exportar; en otras palabras, las plataformas no utilizadas se eliminarán del APK.

Limpiando las plantillas de exportación generada

Puedes utilizar los siguientes comandos para eliminar las plantillas de exportación generadas:

cd platform/android/java
# On Windows
.\gradlew cleanGodotTemplates
# On Linux and macOS
./gradlew cleanGodotTemplates

Usando las plantillas de exportación

Godot necesita APKs de lanzamiento y depuración que se hayan compilado con la misma versión o commit que el editor. Si estás utilizando binarios oficiales del editor, asegúrate de instalar las plantillas de exportación coincidentes o construye las tuyas propias a partir de la misma versión. Esto garantizará la compatibilidad entre el editor y las plantillas de exportación para un correcto funcionamiento.

Al exportar tu juego, Godot abre el APK, cambia algunas cosas dentro y añade tus archivos.

Instalando las plantillas

Las plantillas recién compiladas (android_debug.apk y android_release.apk) deben ser copiadas a la carpeta de plantillas de Godot con sus respectivos nombres. La carpeta de plantillas puede estar ubicada en:

  • Windows: %APPDATA%\Godot\templates\<versión>\

  • Linux: $HOME/.local/share/godot/templates/<versión>/

  • macOS: $HOME/Library/Application Support/Godot/templates/<version>/

<versión> tiene el formato mayor.menor[.parche].estado utilizando los valores de version.py en tu repositorio de código fuente de Godot (por ejemplo, 3.0.5.stable o 3.1.dev). También debes escribir esta misma cadena de versión en un archivo llamado version.txt que se encuentra junto a tus plantillas de exportación.

Sin embargo, si estás escribiendo tus propios módulos personalizados o código C++ personalizado, es posible que desees configurar tus APKs como plantillas de exportación personalizadas aquí:

../../_images/andtemplates.png

No es necesario ni siquiera copiarlos, simplemente puedes hacer referencia al archivo resultante en el directorio bin\ de la carpeta de origen de Godot, de modo que la próxima vez que construyas, tendrás automáticamente las plantillas personalizadas referenciadas.

Solución De Problemas

Plataforma no aparece en SCons

Verifica nuevamente que hayas configurado la variable de entorno ANDROID_SDK_ROOT. Esto es necesario para que la plataforma aparezca en la lista de plataformas detectadas por SCons. Puedes consultar más información en la sección Setting up the buildsystem.

Aplicación no instalada

Android podría mostrar un mensaje indicando que la aplicación no está instalada correctamente. Si esto sucede:

  • Verifica que el almacén de claves de depuración (debug keystore) esté correctamente generado.

  • Revisar que el ejecutable jarsigner es de JDK 8.

Si aún falla, abre una línea de comandos y ejecuta logcat:

adb logcat

Luego, revisa la salida mientras la aplicación está instalada; el mensaje de error debería aparecer allí. Si no puedes resolverlo, busca ayuda para solucionar el problema.

La aplicación se cierra inmediatamente

Si la aplicación se ejecuta pero se cierra inmediatamente, esto podría deberse a una de las siguientes razones:

  • Asegúrate de utilizar plantillas de exportación que coincidan con la versión de tu editor; si utilizas una nueva versión de Godot, debes actualizar también las plantillas.

  • libgodot_android.so no se encuentra en libs/<android_arch>/, donde <android_arch> es la arquitectura del dispositivo.

  • La arquitectura del dispositivo no coincide con la(s) arquitectura(s) exportada(s). Asegúrate de que tus plantillas hayan sido compiladas para la arquitectura del dispositivo y que la configuración de exportación incluya soporte para esa arquitectura.

En cualquier caso, adb logcat también debería mostrar la causa del error.