实现索引
本侧栏描述 Mono / Il2Cpp 如何落地,方便对照源码与排查性能。不改变 JavaScript 可见语义。
语义权威在 spec
冲突裁决:spec/** > Il2Cpp 源码 > impl/**。若实现笔记与规范不一致,以 规范文档 为准;请修实现或更新本页,勿在业务里依赖未写入规范的行为。
架构地图
TsAppDomain.Initialize(moduleLoader)
│
┌───────────────┴───────────────┐
▼ ▼
ZTS.Mono (Editor) ZTS.Il2Cpp (Player)
TsMonoAppDomain TsIl2CppAppDomain
│ │
三表 exotic 分派 / Emit 桥 libil2cpp/zts (C++)
│ │
└───────────────┬───────────────┘
▼
同一 JS 可见语义 (spec/**)
| 层 | Mono | Il2Cpp |
|---|---|---|
| 程序集 | ZTS.Mono | ZTS.Il2Cpp(薄 InternalCall 壳) |
| 共享门面 | ZTS.Common:TsAppDomain、特性 | 同左 |
| JS→C# 桥 | EnsureBinding + Expression Emit | Generate stub + ReducedType 复用 |
| C#→JS | GetFunction + Delegate 桥 | 同左(native 路径) |
| JS 引擎 | QuickJS(Editor:Plugins DLL) | QuickJS 静态编进 Player |
包内 native 树:Packages/com.code-philosophy.zts/ZTS~/zts-runtime → Install 后为 libil2cpp/zts。布局见 11-MULTI-VERSION。
本区文档
| 文档 | 内容 |
|---|---|
| Mono | Editor:Emit MethodBridge、EnsureBinding、模块职责 |
| Il2Cpp | Player:zts-runtime、Generate stubs、ReducedType、初始化顺序 |
概念层对照:双运行时 · 设计概览。日常流程:Editor 与 Player · 构建。