Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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.scale refleja el DPI; como usas Relative/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 Relative para 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).

Ver también

¿Te resultó útil esta página?