跳到主要内容

实现索引

本侧栏描述 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/**)
MonoIl2Cpp
程序集ZTS.MonoZTS.Il2Cpp(薄 InternalCall 壳)
共享门面ZTS.CommonTsAppDomain、特性同左
JS→C# 桥EnsureBinding + Expression EmitGenerate stub + ReducedType 复用
C#→JSGetFunction + Delegate 桥同左(native 路径)
JS 引擎QuickJS(Editor:Plugins DLL)QuickJS 静态编进 Player

包内 native 树:Packages/com.code-philosophy.zts/ZTS~/zts-runtime → Install 后为 libil2cpp/zts。布局见 11-MULTI-VERSION

本区文档

文档内容
MonoEditor:Emit MethodBridge、EnsureBinding、模块职责
Il2CppPlayer:zts-runtime、Generate stubs、ReducedType、初始化顺序

概念层对照:双运行时 · 设计概览。日常流程:Editor 与 Player · 构建