# cframework **Repository Path**: scloud_admin_admin/cframework ## Basic Information - **Project Name**: cframework - **Description**: unity hybridclr热更框架 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2024-04-16 - **Last Updated**: 2024-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目目的 - 快速接入 [hybridclr](https://github.com/focus-creative-games/hybridclr_unity) ,让热更初学者更快熟悉热更流程,供对热更有兴趣的同学学习
# 功能 - 一键打包热更的代码包、资源包、app - 完全热更代码功能,可更新热更包逻辑和游戏逻辑 - 自动检测热更代码和资源包是否兼容旧版app - 各平台独立发版配置,规范不同平台或渠道的发版流程 - 附带测试用的本地http服务器,无需另行建服务器测试 - 支持ali oss存储热更数据,支持蒲公英app管理平台,可根据项目扩展更多功能 - 发版后可手动改版本信息和白名单设备 - 发版优化检查是否配置好工具或属性并提示,避免发版过程才发现问题
# unity版本 - 2021.3.x - 其他版本请自行测试
# 发版(以win64为例,其他平台同理): - 在unity中打开BuildPlayerSettings/publish目录,右键点击win64_dev,选择cframework->BuildPlayer->Build,发完版后会弹框提示 - 发版有问题时会提示,根据提示操作,例如hybridclr还没安装,缺失命令行工具配置等等 - 发版成功会弹框提示下载地址,复制后在浏览器打开 - 支持android,ios,webgl,wechat,mac,windows平台
# 发版配置说明 BuildPlayerSettings/publish/ android_*:android发版配置 ios_*:ios发版配置 webgl_*:webgl发版配置 mac_*:mac发版配置 win32_*:win32发版配置 win64_*:win64发版配置 webgl_wechat_*:微信小程序发版配置 BuildPlayerSettings/config/ BuildAppSettings:app设置 ChannelUtil_*:渠道工具,用来发布app DeviceToolPathSetting:设备工具路径配置,以设备名为key,记录不同设备的工具的路径 FileSystemUtil_*:文件系统工具,上传和下载热更文件的工具 HybridclrAssemblySetting:热更dll信息配置 PublishUtil_*:发布工具,不同平台的发布流程不一样,需要不同的工具
# 菜单工具说明 cframework AddressableTool->build:测试addressable发版 SCM->RestoreAndCleanAllChanges:回滚和清除所有修改 HttpServer->Stop:停http服务器 HybridCLR->Disable:禁用热更 Assets->cframework BuildPlayer Build:构建发版 CheckEssential:检查必须的工具和字段 SwitchPlatform:切换平台 HttpServer Start:开启http服务器,供客户端热更 PythonHttpServer Start: 开启python的http服务器,供客户端热更
# 框架架构 - 是为了让发起热更功能、热更功能和游戏功能尽量分离,并满足热更逻辑也能被热更的需要,把框架代码分成功能相同的三个dll(cfw_launchhotupdate.dll,cfw_hotupdate.dll,cframework.Runtime.dll),框架也是分成三层 - 启动热更层:cfw_launchhotupdate.dll, LaunchHotUpdate.dll - 热更逻辑层:cfw_hotupdate.dll, BaseHotUpdate.dll, HotUpdate.dll - 游戏逻辑层:cframework.Runtime.dll, Assembly-CSharp.dll
# dll说明 - cfw_launchhotupdate.dll:供app启动热更功能用的cframework,不可热更 - LaunchHotUpdate.dll:启动热更功能的dll - cfw_hotupdate.dll:供热更逻辑用的cframework,可热更 - BaseHotUpdate.dll:热更逻辑功能基类的dll - HotUpdate.dll:热更逻辑功能,依赖项目需求,可热更 - cframework.Runtime.dll:供游戏逻辑dll用的cframework,可热更 - Assembly-CSharp.dll:游戏逻辑,可热更 - UniTask.dll:补充元数据用的,项目不用unitask的话可自行删除 - Unity.Addressable.dll:补充元数据用的 - cframework.Runtime.dll,cfw_hotupdate.dll,cfw_launchhotupdate.dll的代码是一样,是为了让发起热更功能、热更功能和游戏功能尽量分离才这样设计
# 项目用的框架数据和资源(fwdata目录) Assets/fwdata: 热更框架需要的资源 BuildPlayerSettings/publish:各平台发版配置 BuildPlayerSettings/config:一些共享的配置 HotUpdate:热更下载逻辑和资源 HotUpdate.prefab:附带运行热更逻辑的资源 load_dll_config.txt:读入热更dll和运行入口的配置 tex: 热更时用到的ui贴图目录 Scripts: 热更逻辑脚本 LaunchHotUpdate Scripts/LaunchHotUpdate.cs:程序运行的第一个脚本 LaunchHotUpdate.unity:程序运行时的第一个场景 Game Scripts/StartGame.cs: 热更后运行的第一个游戏逻辑 Resources hotupdate_app_info.txt:热更用的app配置,包含热更http服务器或oss地址 hotupdate_res.txt:热更资源配置,生成代码热更包时,会把这些资源一起打包成assetbundle hotupdate_link.xml: 用来避免dll被裁剪,发热更app时才会用到
# 集成到自己的项目 - 添加 "com.focus-creative-games.hybridclr_unity": "https://gitee.com/focus-creative-games/hybridclr_unity.git", 到Packages/manifest.json - 添加 "com.cframework": "https://gitee.com/wnity/cframework.git?path=Assets/cframework", 到Packages/manifest.json - 添加 "com.unity.addressables": "1.21.20", 到Packages/manifest.json - 拷贝Assets/fwdata到自己的项目里 - 编辑Assets/fwdata/HotUpdate/load_dll_config.txt,把gameScene改成你游戏开始的场景的Addressable key - 打开File->Build Settings菜单项,添加 LaunchHotUpdate.unity到Scenes in Build,把其他场景从Scenes in Build移除或不勾选,改成通过StartGame.cs加载 - 修改Assets/fwdata/BuildPlayerSettings/HybridclrAssemblySetting.asset,根据自己的项目配置热更的dll信息,用法和hybridclr的设置页对应的设置项一样 - 发版
# 发版流程 - 检查是否已安装hybridclr - 转换平台 - 配置平台发版参数(development build, il2cpp等) - 检查发版必须的工具和字段是否配置完整 - 更新热更配置文件信息 - 检查addressable兼容性并生成addressable - 配置hybridclr - 检查热更dll兼容性生成hybridclr热更dll - 打包热量代码包的assetbundle - 上传addressable和代码包到http文件系统或oss - 生成app - 发布app到渠道 - 启动本地http服务器 - 弹窗提示app下载地址 - 复制下载地址到浏览器打开并下载运行app
# 热更流程 - 在BaseLaunchHotUpdate.dll中,BaseLaunchHotUpdate检查是否启用热更,是的话继续 - 加载热更逻辑的dll并开始热更(StartHotUpdate),进入BaseHotUpdate.dll - 检查是否白名单设备 - 检查是否需要热更代码 - 检查是否需要热更Addressable - 下载addressable和代码包 - 加载最新游戏逻辑dll和补充元数据 - 重加裁Addressable内容信息 - 开始游戏(StartGame),进入Assembly-CSharp.dll