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.
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)
- Câmera no desktop varia por SO (ex.: Mac ARM pode retornar
null). WKWebViewcomevaluateJavaScriptrestrito (iOS).createWebView()retornanullna web (Web).Device.homeFolderénullna web.- HTTP na web tem restrições (CORS, sem sockets) —
Utils.getRemoteFileretornanull.
Regra de ouro para portabilidade: todo recurso de dispositivo pode não existir num alvo. Cheque antes de usar (
Device.platform,createWebView() != null, retornonull) — 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?Obrigado pelo feedback!