📄️ 介绍
旗舰版主要面向有严格性能要求的项目。旗舰版相对社区版在性能方面有巨幅提升,几乎(未改动时为100%)达到原生性能水平,同时在安全性和内存方面有较好的优化。
📄️ 快速上手
请在Win64或MacOS Standalone平台上正确跑通热更新流程后再尝试Android、iOS平台的热更新。
📄️ 构建和热更新
旗舰版的主包构建与热更新发布流程:创建AOT快照、生成meta version文件、多平台与快照版本管理,以及DHE程序集的热更新发布。
📄️ 加载热更新程序集
旗舰版本相比社区版本和专业版本增加了DHE程序集。由于DHE程序集需要额外的参数要指示运行时如何动态选择执行原始AOT代码还是热更新代码,它无法使用Assembly.Load接口加载。 因此需要特殊的加载规则。
📄️ 代码中使用
在初次构建App未发生任何代码更新,或者说虽然有代码更新,但该DHE程序集的代码没有更新时,可以调用此接口,表示完全使用原始AOT实现。
📄️ 多个DHE程序集
存在多个DHE程序集时,可以根据每个程序集是否改变来决定调用LoadOriginalDifferentialHybridAssembly或LoadDifferentialHybridAssemblyUnchecked接口进行加载, 但有一些额外的限制。
📄️ DHAO 文件
dhao文件是DHE技术的核心概念。dhao文件中包含了离线计算好的最新的热更新dll中变化的类型和函数的信息,运行时直接根据dhao文件中信息决定执行某个热更新函数时,应该使用最新的解释版本还是直接调用原始的AOT函数。
📄️ MetaVersion工作流
DHE热更新曾存在两种工作流:
📄️ DHAO工作流
DHAO工作流是DHE热更新使用最悠久的工作流,在v7.6.0及更早版本之前,只支持DHAO工作流。
📄️ 使用手册
旗舰版的安装、PlayerSettings与HybridCLR配置、DHE程序集设置、标准指令优化开关及函数注入策略配置说明。
📄️ 函数注入策略
为了避免脏函数传染,默认会在所有函数头部注入一小段检查跳转代码。这个注入代码对短函数性能和最终生成的代码长度的影响较为显著(增加30%左右代码)。 虽然绝大多数情况下注入代码对整体性能影响微不足道,但罕见的特殊场合下,会观察到这个性能下降现象。 自v4.5.9版本起,允许自定义配置这个注入行为。
📄️ 重定向元数据
编译器生成的匿名类和匿名函数是不稳定的,有时候仅仅因为程序集中新增了一个类型或者函数,就导致大量的匿名类和匿名函数的名称发生变化。 即使这些匿名类自身的代码并没有改变,由于它们名称发生改变,生成dhao时会将这些匿名类和函数被判定为变化,从而导致这些匿名函数以 解释方式执行,最终影响运行性能。
📄️ 免费试用
相比于付费试用版本和正式购买后的版本都包含HybridCLR所有运行时及Editor源码,免费试用版本只提供预编译的 二进制lib及工具,只支持构建iOS平台目标。
📄️ 常见问题
原因是 意外创建了被DHE替换的原始AOT类型。使用DHE后,不能再创建DHE程序集中类型对应的原始类型。有几个导致这个错误的原因: