Configuración Android
Las propiedades de identidad y el manifest específicos de Android se gestionan a través de
ludens.properties en la raíz del proyecto. Este sistema te permite personalizar tu aplicación sin
tocar código Kotlin ni scripts de compilación complejos.
Identidad de la Aplicación
Sección titulada «Identidad de la Aplicación»Estas propiedades definen el nombre del paquete, la versión y los nombres mostrados por el sistema Android.
# ----- Android Identity -----ludens.android.id=com.ludens.compose.ludensludens.android.version=0.4.0ludens.android.versionCode=1ludens.android.name=Ludensludens.android.launcherName=Ludensludens.android.minSDK=21ludens.android.targetSDK=36ludens.android.immersive=trueConfigura estas propiedades usando el prefijo ludens.android.*:
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
id | String | com.ludens.compose.ludens | Identificador único de la aplicación (package name). |
version | String | 0.4.0 | Nombre de la versión visible para el usuario. |
versionCode | Entero | 1 | Código de versión interno para actualizaciones en la Play Store. |
name | String | Ludens | Nombre completo de la aplicación en ajustes del sistema. |
launcherName | String | Ludens | Nombre mostrado bajo el icono en la pantalla de inicio. |
minSDK | Entero | 21 | Nivel mínimo de API de Android soportado. |
targetSDK | Entero | 36 | Nivel de API de Android al que se dirige la compilación. |
immersive | Booleano | true | Activa el modo inmersivo (oculta las barras del sistema). |
Icono de la Aplicación
Sección titulada «Icono de la Aplicación»Ludens incluye un plugin Generador Automático de Iconos de la App que crea los iconos de inicio para todas las plataformas de destino a partir de una sola imagen origen (SVG o PNG).
Generación Automática (Recomendado)
Sección titulada «Generación Automática (Recomendado)»- Coloca tu imagen de icono origen dentro del directorio
project/assets/icons/.- Para mejores resultados, usa una imagen vectorial llamada
icon.svgo una imagen rasterizada de alta resolución llamadaicon.png(de al menos 512x512 píxeles). - Si deseas usar capas adaptativas separadas para Android, puedes colocar
icon_foreground.svg/icon_foreground.pngeicon_background.svg/icon_background.pngen ese mismo directorio.
- Para mejores resultados, usa una imagen vectorial llamada
- Configura el generador de iconos en
ludens.properties:
# Nombre del icono maestro origen en project/assets/icons/ludens.icons.name=icon
# Nombre de la capa adaptativa de primer plano en project/assets/icons/ludens.icons.foreground=icon_foreground
# Color de fondo hexadecimal sólido o referencia de recursoludens.icons.background=#FDFDFD
# Configuración específica de Androidludens.icons.android.enable=trueludens.icons.android.format=webpludens.icons.android.playstore=true
# Configuración específica de iOSludens.icons.ios.enable=true
# Escala del elemento de primer plano dentro del viewport del icono adaptativoludens.icons.scale=0.62- Compila el proyecto. El sistema de compilación generará automáticamente:
- Android: Iconos mipmap redondos y cuadrados tradicionales, hojas de iconos adaptativos XML bajo
mipmap-anydpi-v26y capas vectoriales/rasterizadas (ic_launcher_foreground,ic_launcher_background) colocadas enandroidMain/res/. - iOS: Todos los tamaños de AppIcon requeridos (iPhone, iPad, App Store) junto con el manifiesto del catálogo de assets
Contents.jsoncorrespondiente bajoiosApp/iosApp/Assets.xcassets/AppIcon.appiconset. - Google Play Store: Un icono de ficha en alta resolución
ic_launcher-playstore.png(512x512).
- Android: Iconos mipmap redondos y cuadrados tradicionales, hojas de iconos adaptativos XML bajo
Configuración Manual (Alternativa)
Sección titulada «Configuración Manual (Alternativa)»Si prefieres generar tus recursos manualmente o usar las herramientas estándar de desarrollo de Android:
- Haz clic derecho en el directorio
composeApp/src/androidMain/resen Android Studio. - Selecciona New > Image Asset.
- Usa el asistente de Image Asset Studio para configurar tus capas y escala.
![]()
Configuración del Manifest
Sección titulada «Configuración del Manifest»Ludens genera automáticamente el archivo AndroidManifest.xml basándose en estas propiedades. Esto
permite una gestión
segura y predecible del manifest.
# ----- Android Manifest -----ludens.android.manifest.allowBackup=trueludens.android.manifest.largeHeap=trueludens.android.manifest.hardwareAccelerated=trueludens.android.manifest.screenOrientation=sensorLandscapeludens.android.manifest.usesCleartextTraffic=falseludens.android.manifest.resizeableActivity=falseOrientación del Juego
Sección titulada «Orientación del Juego»Por defecto, Ludens fuerza la aplicación al modo horizontal usando sensorLandscape. Esto asegura
que el juego rote
según el sensor del dispositivo pero se mantenga en una orientación horizontal. Para cambiar esto,
modifica la propiedad
ludens.android.manifest.screenOrientation.
Orientaciones Comunes
Sección titulada «Orientaciones Comunes»| Valor | Comportamiento |
|---|---|
sensorLandscape | (Predeterminado) Solo horizontal, rota automáticamente entre horizontal izquierdo y derecho según el sensor. |
sensorPortrait | Solo vertical, rota automáticamente entre vertical normal e invertido según el sensor. |
landscape | Orientación horizontal fija (ignorando el sensor). |
portrait | Orientación vertical fija (ignorando el sensor). |
fullSensor | Permite la rotación a cualquiera de las 4 orientaciones. |
Referencia de Propiedades
Sección titulada «Referencia de Propiedades»Configura estas propiedades usando el prefijo ludens.android.manifest.*:
| Propiedad | Tipo | Mapeo | Descripción |
|---|---|---|---|
allowBackup | Booleano | android:allowBackup | Indica si Android puede realizar copias de seguridad en Google Drive. |
largeHeap | Booleano | android:largeHeap | Solicita un montón más grande para juegos pesados. |
hardwareAccelerated | Booleano | android:hardwareAccelerated | Activa la aceleración por GPU para la interfaz. |
screenOrientation | String | android:screenOrientation | Define la orientación de pantalla (ver tabla arriba). |
usesCleartextTraffic | Booleano | android:usesCleartextTraffic | Permite tráfico HTTP en claro (No recomendado). |
resizeableActivity | Booleano | android:resizeableActivity | Permite que el sistema cambie el tamaño de la actividad. |
Permisos
Sección titulada «Permisos»Si tus plugins de RPG Maker requieren acceso al hardware del dispositivo o servicios de red, debes declarar esos permisos. Ludens facilita esto con interruptores integrados.
Por ejemplo, si tu juego obtiene puntuaciones de una tabla de clasificación en línea, necesitarás el
permiso internet.
Si tu juego debe evitar que la pantalla se apague durante escenas largas, usa el permiso wakeLock.
# ----- Android Permissions -----ludens.android.permissions.internet=falseludens.android.permissions.networkState=falseludens.android.permissions.wakeLock=falseludens.android.permissions.accessWifiState=falseludens.android.permissions.changeWifiState=falseDeclara estos permisos bajo el prefijo ludens.android.permissions.*:
| Propiedad | Tipo | Mapeo | Descripción |
|---|---|---|---|
internet | Booleano | INTERNET | Otorga acceso a la red para funciones online. |
networkState | Booleano | ACCESS_NETWORK_STATE | Acceso al estado y tipo de red. |
wakeLock | Booleano | WAKE_LOCK | Mantiene la CPU activa mientras se renderiza o juega. |
accessWifiState | Booleano | ACCESS_WIFI_STATE | Acceso al estado de la conexión Wi-Fi. |
changeWifiState | Booleano | CHANGE_WIFI_STATE | Permiso para cambiar la conectividad Wi-Fi. |
Avanzado: Personalización Manual del Manifest
Sección titulada «Avanzado: Personalización Manual del Manifest»Para configuraciones no cubiertas por ludens.properties, puedes editar el manifest directamente en
composeApp/src/androidMain/AndroidManifest.xml.
Añadir Permisos Personalizados
Sección titulada «Añadir Permisos Personalizados»Si tus plugins requieren acceso al hardware como la Cámara o el Micrófono, añade la etiqueta
<uses-permission> como
hijo directo del elemento <manifest>.
Ejemplo: Añadir permiso de Micrófono:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Añadir nuevos permisos aquí --> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<application>...</application></manifest>Configuración de Firma
Sección titulada «Configuración de Firma»Para compilaciones de producción, necesitas un almacén de llaves. Crea un archivo
keystore.properties en la raíz del
proyecto basado en el archivo keystore.properties.template:
storePassword=tu_store_passwordkeyPassword=tu_key_passwordkeyAlias=tu_aliasstoreFile=C:/Ruta/A/Tu/llave.jksDiagnósticos de Error y Depuración
Sección titulada «Diagnósticos de Error y Depuración»Ludens proporciona un sistema híbrido de intercepción de errores integrado para ayudarte a diagnosticar cierres inesperados del juego y fallos de carga del WebView.
# ----- WebView Debug & Error Reporting -----# Activa la intercepción detallada de errores y muestra un diálogo de traceback para errores del juego.ludens.debug.errors=trueConfigura esta propiedad usando el prefijo ludens.debug.*:
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
errors | Booleano | true | Activa la intercepción de errores en tiempo de ejecución del WebView y el diálogo de traceback. |
Cómo Funciona
Sección titulada «Cómo Funciona»Cuando ludens.debug.errors está configurado en true:
- Excepciones de JavaScript: Ludens inyecta un listener de errores en el WebView del juego para capturar excepciones de ejecución JavaScript no controladas y rechazos de promesas no manejados.
- Fallos de Carga Nativos: El cliente WebView nativo intercepta fallos al cargar recursos (por ejemplo, archivos perdidos, rutas incorrectas, errores 404).
- Diálogo de Traceback: En lugar de fallar silenciosamente o mostrar una pantalla negra, Ludens renderiza un diálogo nativo de Compose Multiplatform con el mensaje detallado de la excepción y el stack trace.
- Copiar al Portapapeles: Copia el traceback técnico completo para depuración.
- Recomenzar: Recarga instantáneamente el WebView y reinicia el juego.