一:前言
HybridCLR又称作huatuo(华佗)、wolong(卧龙)热更方案,底层是C++编写的,是一种热更新方案,与Lua、ILRuntime等都是不同的热更方案
HybridCLR扩充了il2cpp的代码,使它由纯AOT runtime变成AOT+Interpreter混合runtime,进而支持动态加载assembly,实现热更新
HybridCLR官网
HybridCLR热更原理
IOS不允许JIT的方式编译,因为JIT是需要在运行时动态将IL代码编译为机器码并将其保存在内存中,但是IOS是不允许执行动态生成的机器码(运行时分配的内存不允许执行),所以相当于变相的封锁了JIT这种编译方式
而HybridCLR是实现了自己的一套解释器去解释执行,解释执行不会在运行时生成额外的本地机器码,而是运行时直接逐行分析并编译成机器码执行,内存中不会保留,因此不受JIT编译的限制
二:什么是热更新
热更新是指当游戏出现bug,或者需要修改,增加某个功能的时候,我们不需要重新下