Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Android 🤖
Ejecutar
gradlew :android:installDebug
El AndroidLauncher (un AndroidApplication) crea el Main vía getMain(canStart) →
new Main(canStart, getCommandline()).
⚠️ Inicio retrasado por permisos
En Android, normalmente no levantas la UI de inmediato — pides los permisos primero. El patrón:
// en el launcher: canStart = false → la UI NO sube todavía
initializeForView(getMain(false), config);
// … tras el usuario conceder los permisos (callback) …
main.startApp(true); // ahora sí, sube la UI (delayed = true)
Así, cámara/GPS/Bluetooth ya están autorizados cuando aparece la primera pantalla (ver Cap. 4 §4.2).
Manifiesto y permisos
Declara en el AndroidManifest.xml los permisos de los recursos que usas (cámara, ubicación, Bluetooth) —
y pídelos en runtime antes del startApp(true).
Status bar y densidad
- La status bar se considera en el layout (
DeviceConfig.statusbarHeight). - Densidad:
Screen.scalerefleja el DPI; como usasRelative/fracciones, la UI ya se adapta.
Botón Atrás
El botón físico Atrás lo captura la app (por defecto hace hide() de la ventana superior — ver
La pila de ventanas).
Empaquetado
Las libs nativas .so (incl. crossfly-lib) se empaquetan por ABI. Firma/AAB y subida a la Play
Store: Build y distribución.
Buenas prácticas
- Pide los permisos antes de
startApp(true)(inicio retrasado) — evita pantallas rotas. - Prueba en densidades/pantallas variadas; confía en
Relativepara adaptar.
Errores comunes
- Levantar la UI (
canStart=true) y solo entonces pedir el permiso (recurso no disponible en la 1ª pantalla). - Olvidar el permiso en el
AndroidManifest.xml(la solicitud en runtime falla silenciosamente).