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.

Matriz de plataformas y funciones

CrossFly es un proyecto multimódulo Gradle: la UI y la lógica viven en core (neutro), y cada launcher (lwjgl3, android, ios, web) solo hace el bootstrap del SO. El mismo código Java corre en los cuatro destinos.

core — UI + lógica (neutral)

🖥️ lwjgl3 → LWJGL3

🤖 android → Android

🍎 ios → RoboVM (AOT)

🌐 web → TeaVM + WebGL2

Detección de plataforma

if (Device.platform.isDesktop()) { ... }   // WINDOWS/LINUX/MACOS
if (Device.platform.isMobile()) { ... }     // ANDROID/IPHONE/IPAD
if (Device.platform.isIOS()) { ... }

Platform: JAVA · WINDOWS · LINUX · IPHONE · ANDROID · IPAD · MACOS.

Matriz de soporte por función

Función 🖥️ Desktop 🤖 Android 🍎 iOS 🌐 Web
Renderizar UI ✅ ✅ ✅ ✅
Cámara / barcode ⚠️¹ ✅ ✅ ❌
GPS / ubicación ❌ ✅ ✅ ❌
Bluetooth BLE ⚠️ ✅ ✅ ❌
Biometría ⚠️ ✅ ✅ ❌
Mapas nativos ✅ ✅ ✅ ❌
WebContainer ✅ ✅ ✅² ❌³
Vibración ❌ ✅ ✅ ❌
Voz (TTS/STT) ⚠️ ✅ ✅ ❌
Persistencia de archivos ✅ ✅ ✅ ❌⁴
HTTP ✅ ✅ ✅ ⚠️⁵

✅ soportado · ⚠️ limitado/varía · ❌ stub (no hace nada útil)

  1. La cámara en desktop varía según el SO (ej.: Mac ARM puede devolver null).
  2. WKWebView con evaluateJavaScript restringido (iOS).
  3. createWebView() devuelve null en la web (Web).
  4. Device.homeFolder es null en la web.
  5. HTTP en la web tiene restricciones (CORS, sin sockets) — Utils.getRemoteFile devuelve null.

Regla de oro para la portabilidad: cualquier recurso de dispositivo puede no existir en un destino. Compruébalo antes de usarlo (Device.platform, createWebView() != null, retorno null) — ver Integración nativa.

Qué página leer

Destino Página
🖥️ iterar rápido Desktop (LWJGL3)
🤖 móvil Android Android
🍎 iPhone/iPad iOS (RoboVM)
🌐 navegador Web (TeaVM)
conectar el código al SO Integración nativa
empaquetar y publicar Build y distribución
¿Te resultó útil esta página?