This page was machine-translated from Portuguese and may contain errors. The Portuguese version is canonical.
Platform and feature matrix
CrossFly is a multi-module Gradle project: the UI and logic live in core (neutral), and each
launcher (lwjgl3, android, ios, web) only handles the OS bootstrap. The same Java code runs
on all four targets.
Platform detection
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.
Support matrix by feature
| Feature | 🖥️ Desktop | 🤖 Android | 🍎 iOS | 🌐 Web |
|---|---|---|---|---|
| Render UI | ✅ | ✅ | ✅ | ✅ |
| Camera / barcode | ⚠️¹ | ✅ | ✅ | ❌ |
| GPS / location | ❌ | ✅ | ✅ | ❌ |
| Bluetooth BLE | ⚠️ | ✅ | ✅ | ❌ |
| Biometrics | ⚠️ | ✅ | ✅ | ❌ |
| Native maps | ✅ | ✅ | ✅ | ❌ |
WebContainer |
✅ | ✅ | ✅² | ❌³ |
| Vibration | ❌ | ✅ | ✅ | ❌ |
| Voice (TTS/STT) | ⚠️ | ✅ | ✅ | ❌ |
| File persistence | ✅ | ✅ | ✅ | ❌⁴ |
| HTTP | ✅ | ✅ | ✅ | ⚠️⁵ |
✅ supported · ⚠️ limited/varies · ❌ stub (does nothing useful)
- Camera on desktop varies by OS (e.g., Mac ARM may return
null). WKWebViewwith restrictedevaluateJavaScript(iOS).createWebView()returnsnullon the web (Web).Device.homeFolderisnullon the web.- HTTP on the web has restrictions (CORS, no sockets) —
Utils.getRemoteFilereturnsnull.
Golden rule for portability: every device feature may not exist on a given target. Check before using it (
Device.platform,createWebView() != null,nullreturn) — see Native integration.
Which page to read
| Target | Page |
|---|---|
| 🖥️ iterate fast | Desktop (LWJGL3) |
| 🤖 Android phone | Android |
| 🍎 iPhone/iPad | iOS (RoboVM) |
| 🌐 browser | Web (TeaVM) |
| wire code to the OS | Native integration |
| package and publish | Build and distribution |
Was this page helpful?Thanks for the feedback!