跳转到内容

Migo 开发者文档

可嵌入的 Canvas/WebGL 小游戏运行时,同一份 C ABI 跨 Android、Linux、Windows、OpenHarmony

Migo 是可嵌入的 Canvas/WebGL 小游戏运行容器。宿主 App 提供 surface、输入与存储,Migo 提供 V8 JavaScript 运行时与 Skia 渲染管线,跨 Android、Linux、Windows 及 OpenHarmony 四个平台。没 有 DOM 或 CSS——不是通用 WebView 替代品。

flowchart TB
  Bundle[小游戏 bundle] --> Adapter[独立适配器(可选)]
  Adapter --> Boundary[migo.* capability boundary]
  Boundary --> Core[Rust core]
  Core --> V8[V8 JavaScript runtime]
  Core --> Render[Skia / Canvas / WebGL]
  Host[宿主 App] <--> SDK[C ABI(Android 之上有语言 facade)]
  SDK <--> Core
  Host --> Services[surface · input · storage · network · ads]
  1. 小游戏 bundle 只通过 migo.* 能力边界访问运行时能力;可选的独立适配器位于引擎之外。
  2. Rust core 编排 V8 JavaScript runtime 与 Skia 渲染后端,输出 Canvas/WebGL 内容。
  3. 宿主 App 通过 C ABI 创建和管理会话 — 四个平台唯一共有的事实接口;Android 侧惯用的 Java facade(MigoRuntime/MigoGameView)只是这层 ABI 之上的语言包装。surface、input、storage、network、ads 等服务由宿主自行提供。
  4. Migo 不提供 DOM、CSS、页面布局或浏览器文档对象模型。

C ABI 由 8 个头文件组成,跨四个平台接口一致,abi_version 协商。按头文件逐页:

页面 一句话
C ABI 总览 头文件关系、调用顺序、句柄模型、错误码与编译期选型
基础类型与导出宏 句柄/错误码/导出宏,MIGO_ABI_* 常量与 struct_size 演进规则
Engine 初始化 migo_engine_* 生命周期:创建、ICU 数据、销毁线程完成屏障
Session 会话句柄、MigoHostCallbacks、dispatch 派发器与销毁顺序
Surface 接入 migo_surface_attach、平台 descriptor、frame_info 与背压
输入事件 migo_session_send_* 系列:校验、FIFO、坐标单位与各事件载荷
外部帧注入 readPixels/getImageData 兼容路径、ingress/sync-barrier/resource 三 lane
运行库能力查询 migo_query_capabilities:ABI 版本区间与平台位掩码的运行时查询

语义细节(架构、生命周期、线程模型)见核心概念区。