HybridCLR 是一个特性完整、零成本、高性能、低内存的近乎完美的Unity全平台原生C#热更方案。

HybridCLR 扩充了 il2cpp 的代码, 使它由纯 AOT Runtime 变成 AOT+Interpreter 混合 runtime, 进而原生支持动态加载 assembly, 使得基于 il2cpp backend 打包的游戏不仅能在Android平台, 也能在 IOS、 Consoles 等限制了JIT 的平台上高效地以 AOT+interpreter 混合模式执行。从底层彻底支持了热更新。

支持所有il2cpp支持的平台。目前测试支持 PC(Win32和Win64)、 macOS(x86、 x64、 Arm64)、Android(armv7, armv8), iOS(64bit)、 NS(64bit)、 WebGL平台,剩余平台有待测试。

原理:
HybridCLR 从 mono 的 mixed mode execution (opens new window) 技术中得到启发, 为 unity的il2cpp之类的 AOT runtime 额外提供了 interpreter 模块,将它们由纯AOT运行时改造为 “AOT+ Interpreter” 混合运行方式。

更具体地说, HybridCLR 做了以下几点工作:

  • 实现了一个高效的元数据(dll)解析库.
  • 改造了元数据管理模块, 实现了元数据的动态注册.
  • 实现了一个IL指令集到自定义的寄存器指令集的compiler.
  • 实现了一个高效的寄存器解释器.
  • 额外提供大量的 instinct 函数, 提升解释器性能.
  • 提供 hotfix AOT 的支持(官方有简要版本, 深度使用需付费支持DHE差分更新技术)

以下是iphone 11及小米5C手机下的实机测试报告。
AOT 行是原生il2cpp的数据。HotFix 行是HybridCLR的数据。Lua 行是xlua的数据。

官方网站 => https://focus-creative-games.github.io/
开源地址 => https://github.com/focus-creative-games/hybridclr
开源地址 => https://github.com/focus-creative-games/il2cpp_plus

授权许可 => MIT

作者:admin  创建时间:2022-10-26 10:59
最后编辑:admin  更新时间:2022-12-28 13:16