跳到内容
CrossFly 是 100% 开源在 GitHub 关注我们
CrossFlyCrossFly
开始使用

本页面由葡萄牙语机器翻译,可能存在错误。葡萄牙语版本为准。

平台与功能支持矩阵

CrossFly 是一个 Gradle 多模块项目:UI 和逻辑都位于 core(中立层),而每个 launcher(lwjgl3、android、ios、web)只负责操作系统的引导(bootstrap)。同一份 Java 代码可以 在这四个目标平台上运行。

core — UI + 逻辑(中立)

🖥️ lwjgl3 → LWJGL3

🤖 android → Android

🍎 ios → RoboVM (AOT)

🌐 web → TeaVM + WebGL2

平台检测

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。

按功能划分的支持矩阵

功能 🖥️ 桌面端 🤖 Android 🍎 iOS 🌐 Web
渲染 UI ✅ ✅ ✅ ✅
相机 / 条码 ⚠️¹ ✅ ✅ ❌
GPS / 定位 ❌ ✅ ✅ ❌
Bluetooth BLE ⚠️ ✅ ✅ ❌
生物识别 ⚠️ ✅ ✅ ❌
原生地图 ✅ ✅ ✅ ❌
WebContainer ✅ ✅ ✅² ❌³
振动 ❌ ✅ ✅ ❌
语音 (TTS/STT) ⚠️ ✅ ✅ ❌
文件持久化 ✅ ✅ ✅ ❌⁴
HTTP ✅ ✅ ✅ ⚠️⁵

✅ 支持 · ⚠️ 有限制/因情况而异 · ❌ stub(不执行任何有用操作)

  1. 桌面端的相机因操作系统而异(例如:Mac ARM 可能返回 null)。
  2. WKWebView 的 evaluateJavaScript 受限(iOS)。
  3. createWebView() 在 web 上返回 null(Web)。
  4. Device.homeFolder 在 web 上为 null。
  5. web 上的 HTTP 有限制(CORS、无 socket)——Utils.getRemoteFile 返回 null。

**可移植性的黄金法则:**任何设备功能在某个目标平台上都可能不存在。使用前请先检查 (Device.platform、createWebView() != null、返回值 null)——参见 原生集成。

该读哪一页

目标 页面
🖥️ 快速迭代 桌面端 (LWJGL3)
🤖 Android 手机 Android
🍎 iPhone/iPad iOS (RoboVM)
🌐 浏览器 Web (TeaVM)
将代码连接到操作系统 原生集成
打包与发布 构建与分发
这个页面有帮助吗?