主题
XHIM 平台支持矩阵
本页是平台支持声明的唯一入口。目录存在、Facade 源码存在、能生成安装包和已经 通过真实消费者验证是四件不同的事;销售材料只能使用本表的“可交付等级”,不能 根据某个共享源码目录自行推断。
机器可读声明位于 platforms/support-manifest.json。普通校验运行 python3 scripts/release/validate_platform_support.py;准备宣称平台覆盖不低于 OpenIM 时必须再加 --require-openim-parity。只要任一平台未达到 Stable,该命令 就会失败,避免路线图被误写成商品能力。
1. 可交付等级
| 等级 | 含义 | 允许对外表述 |
|---|---|---|
Stable | 签名制品、空白消费者、真机/目标设备、升级和弱网矩阵均通过 | 正式支持 |
Beta | Adapter、安装包和主要消费者构建通过,仍有明确发布证据待补 | 商用测试支持 |
Source Alpha | 有可审查源码和自动化门禁,但没有完整签名制品/设备证据 | 预览,不承诺生产 |
Architecture | 只有协议/设计或共享 Core 可复用,还没有目标端 Adapter | 不得写“已支持” |
2. XHIM 当前状态
| 平台 | 独立客户入口 | Adapter / API | 安装形式 | 当前等级 | 仍需完成 |
|---|---|---|---|---|---|
| iOS | iOS | Swift 回调 + Concurrency、SwiftUI | CocoaPods / 二进制 Swift Package | Beta | Stable Pod、完整 iPhone 机型/系统/升级矩阵 |
| macOS | macOS | Swift 回调 + Concurrency、SwiftUI/AppKit | 二进制 Swift Package | Beta | 独立签名/公证、Intel/Apple Silicon、多窗口与睡眠矩阵 |
| Android | Android | Kotlin Coroutine/Flow、Compose | Maven / AAR | Source Alpha | 正式 Maven、目标 ABI 和物理设备矩阵 |
| Windows | Windows | C# Task/Event、WPF | NuGet | Source Alpha | Windows 签名 NuGet、x64/arm64 消费与设备矩阵 |
| HarmonyOS | HarmonyOS | ArkTS Promise/Event、ArkUI | OHPM / HAR | Source Alpha | 签名 HAR、DevEco clean consumer 和真机矩阵 |
| Flutter | Flutter | Dart Platform Interface + iOS/macOS/Android bridge | pub + 原生包 | Source Alpha | 映射附件/社交/群组/离线全 API,安装 Flutter 后跑三端消费者 |
| Electron | Electron | 完整 Node-API NativeClient + 安全 IPC | npm + prebuild | Source Alpha | macOS arm64 已通过 Electron 43.2.0 ABI 编译/加载;仍需 x64、Windows、Linux prebuild、签名/公证与消费者矩阵 |
| Linux 原生 | C ABI | C ABI / C++ Core | CMake package | Source Alpha | Linux Product Adapter、发行包、UI 选择与发行版矩阵 |
| Web / Browser | Web | TypeScript Web Lite Runtime + Protobuf Fetch/WSS | npm | Source Alpha | npm 正式发布、主流浏览器/弱网消费者矩阵、附件 UI 和可选离线存储 |
| React Native | 本页 | 目标为 iOS/Android 原生桥 | npm | Architecture | TurboModule、Codegen、示例与双端消费者 |
| Unity | 本页 | 目标为 C# P/Invoke + 原生插件 | UPM | Architecture | Windows/macOS/iOS/Android 插件和 IL2CPP/AOT 验证 |
| uni-app | 本页 | 目标为 Web/原生双驱动 | uni_modules | Architecture | H5、小程序、App 三种运行时 Adapter |
| 微信/通用小程序 | 本页 | 目标为无本地库的 XHIM Lite | npm / 小程序包 | Architecture | WSS/HTTPS Lite 协议、受限存储、包体和平台审核矩阵 |
Beta 和 Source Alpha 不是失败状态,而是防止销售承诺超过工程证据。任何平台 升级等级都必须同时提交制品 Hash、构建来源和消费者结果。
OpenIM 枚举中的 iPad 和 AndroidPad 是现有移动 SDK 的设备形态,不另造一套 重复内核。XHIM 在机器清单中把 iPhone/iPad 绑定到 iOS,把手机/平板绑定到 Android;发布矩阵仍须分别覆盖尺寸、旋转、分屏、后台和最低系统,不能用手机 结果替代平板验收。
3. 与 OpenIM 平台面的核对
截至 2026-07-28,OpenIM 的公开 QuickStart 导航包含 iOS、Android、Unity、 Flutter、React Native、Browser、Electron、uni-app 和 Mini Program;平台枚举 还包含 Windows、macOS、Web、Linux 和 HarmonyOS。核对入口:
- OpenIM SDK QuickStart
- OpenIM Platform ID
- OpenIM Flutter
- OpenIM Electron
- OpenIM React Native
- OpenIM Browser
- OpenIM uni-app
- OpenIM Mini Program
- OpenIM Unity
因此 XHIM 不能再把“iOS + macOS + Android + Windows + HarmonyOS”称为完整平台 覆盖。Flutter、Electron 和 Web 已形成可审查的真实适配项目;React Native、 Unity、uni-app 和小程序在对应 Adapter、制品及消费者门禁完成前仍是明确缺口。 Web 当前为 Source Alpha,不能把源码与自动化门禁误写成 Stable 浏览器发行证据。
4. 不复制业务内核的平台架构
text
XHIM C++ Core + stable C ABI
├── iOS Swift Facade
├── macOS Swift Facade
├── Android Kotlin/JNI Facade
├── Windows C# P/Invoke Facade
├── HarmonyOS ArkTS / shared Node-API Facade
├── Flutter Platform Interface
│ ├── iOS bridge
│ ├── macOS bridge
│ └── Android bridge
├── Electron shared Node-API + Main/Preload/Renderer
├── Browser TypeScript Web Lite Runtime
│ └── Protobuf over Fetch + WSS
├── React Native native bridge
├── Unity C# native plugin
└── Web runtime
├── uni-app H5
└── Mini Program Lite登录、Outbox、重连、同步、游标、消息状态和数据库迁移只允许在 Core 或明确的 Web Lite Runtime 中实现一次。跨端框架只映射类型、生命周期、线程和平台权限, 不能各自重新写一套 IM 状态机。
浏览器受沙箱、二进制加载和持久化能力限制,当前有意采用独立的 TypeScript Web Lite Runtime,不假装加载原生 C++ Core。它复用 canonical Protobuf 契约、 服务端幂等/同步语义和统一能力协商;Electron 仍使用原生 Core,两者分别交付。
5. 超越而不是只追平
平台数量只是最低门槛。XHIM 每个平台还要具备:
- 页面不接触 Token 的账号级 Credential Provider 和自动续期;
- 普通请求取消与 durable 消息/媒体取消明确分开;
- SQLCipher、账号隔离、离线只读和错误密钥 fail-closed;
- 自定义消息的版本、fallback 和 Renderer Registry;
- 可观测错误、operation ID、trace ID、诊断快照和脱敏支持包;
- 签名制品、SBOM、NOTICE、构建来源和空白消费者门禁。
只有当 OpenIM 已公开的平台全部达到 Stable,且上述差异化能力有实际制品和 测试证据后,才可以对外使用“平台覆盖不低于 OpenIM”的描述。