hybridclr
hybridclr
C#原生热更方案
TEngine
具体使用框架
热更流程
InitResources
UpdateVersion
获取最新版本数据 PackageVersion
(PackageManifest_DefaultPackage.version)文件保存最新版本(2023-10-14-1140)
UpdateManifest
流程更新 Mainfest 清单
- LoadCacheManifestOperation
- GetSandboxPackageHashFilePath(获取沙盒内包裹的哈希文件路径)
- 比对本地 hash 文件的md5值 和 文件计算出的 md5 码是否一致
- 不一致则清除本地缓存文件
- 一致则加载 Manifest 文件,根据其中的内容,初始化 AssetBundle和Asset、Asset和GUID的关系
- QueryBuildInPackageVersion
- 获取服务器上的 Version 文件
- 服务器上的 Hash 文件覆盖本地沙盒内的 Hash 文件
- LoadBuildinManifestOperation
- 服务器上的 ManifestFile 文件覆盖本地沙盒内的 ManifestFile 文件
- 加载本地的 Manifest 文件
- PackageCachingOperation
DownloadFile
- GetDownloadListByAll
DownloadOver
流程下载结束
ClearCache
清除未使用的缓存文件
LoadAssembly
加载进入热更新程序集
- AOT Assembly 加载原始 Metadata
- 对指定的 HotUpdateAssemblies 文件,进行异步加载
- 加载进 m_HotfixAssemblys 列表中
- 全部加载完成后,通过反射,调用 GameApp 的 Entrance 方法
1
2
3
object[] objects = new object[] { new object[] { m_HotfixAssemblys } };
entryMethod.Invoke(appType, objects);
热更资源部署
可以挂载 github 上部署的博客,根据修改的asset,打包对应的ab包和版本文件,推到 github 上