Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

Matriz de plataformas e recursos

O CrossFly é um projeto multi-módulo Gradle: a UI e a lógica vivem em core (neutro), e cada launcher (lwjgl3, android, ios, web) só faz o bootstrap do SO. O mesmo código Java roda nos quatro alvos.

core — UI + lógica (neutro)

🖥️ lwjgl3 → LWJGL3

🤖 android → Android

🍎 ios → RoboVM (AOT)

🌐 web → TeaVM + WebGL2

Detecção 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 suporte por recurso

Recurso 🖥️ Desktop 🤖 Android 🍎 iOS 🌐 Web
Renderizar UI ✅ ✅ ✅ ✅
Câmera / barcode ⚠️¹ ✅ ✅ ❌
GPS / localização ❌ ✅ ✅ ❌
Bluetooth BLE ⚠️ ✅ ✅ ❌
Biometria ⚠️ ✅ ✅ ❌
Mapas nativos ✅ ✅ ✅ ❌
WebContainer ✅ ✅ ✅² ❌³
Vibração ❌ ✅ ✅ ❌
Voz (TTS/STT) ⚠️ ✅ ✅ ❌
Persistência de arquivos ✅ ✅ ✅ ❌⁴
HTTP ✅ ✅ ✅ ⚠️⁵

✅ suportado · ⚠️ limitado/varia · ❌ stub (não faz nada útil)

  1. Câmera no desktop varia por SO (ex.: Mac ARM pode retornar null).
  2. WKWebView com evaluateJavaScript restrito (iOS).
  3. createWebView() retorna null na web (Web).
  4. Device.homeFolder é null na web.
  5. HTTP na web tem restrições (CORS, sem sockets) — Utils.getRemoteFile retorna null.

Regra de ouro para portabilidade: todo recurso de dispositivo pode não existir num alvo. Cheque antes de usar (Device.platform, createWebView() != null, retorno null) — ver Integração nativa.

Qual página ler

Alvo Página
🖥️ iterar rápido Desktop (LWJGL3)
🤖 celular Android Android
🍎 iPhone/iPad iOS (RoboVM)
🌐 navegador Web (TeaVM)
ligar código ao SO Integração nativa
empacotar e publicar Build e distribuição
Esta página foi útil?