导语
安卓平台性能影响小,可快速修复外网bug。
背景
1.调研现有项目大多数是uniy引擎下采样c#语言编写的。
2.常用的方案,首先是sLua、uLua、xLua等lua系
3.现有热更要求
a.版本迭代的代码差异非常大,担心可能不太适合更新大量代码
b.为了修复战斗对性能要求高的一类bug,需要一种完全不影响代码运行性能的更新方案
发布策略
安卓灰度优先于AppStore的发布,等安卓版本灰度稳定之后再发布iOS,因此代码更新只考虑安卓的更新,iOS只走资源更新即可,剩下增量更新交给AppStore,此方案在后续运营中得到了良好的验证。
IL2CPP加载的实现原理
1、替换整个IL2CPP动态库,因此可以更新所有代码,不管是新功能还是修bug都可以搞定。
2、IL2CPP支持的C#语法特性随意使用,客户端开发同学完全无感知。
3、完全符合Unity启动加载流程,不会因为更新模块引入新的bug。
补丁加载流程
1.Unity安卓启动流程中,加载IL2CPP动态库的时候,提前运行补丁加载函数,实现的功能是读取patch目录下的版本配置文件.
2.与AndroidManifest里安卓的versioncode进行比较,如果补丁的版本号大于基础包apk的版本号,就加载补丁里的动态库,否则就加载apk包内的动态库。
安卓灰度更新流程
1.客户端请求登录
2.游戏服务器接受到登录请求会执行版本号、资源号、patch号,然后会通知客户端是否需要进行更新
3.客户端主动向资源服务器发起查询更新内容
4.资源服务器返回更新内容给游戏客户端
5.游戏客户端判段是不是存在patch,如果有就进入patch流程
6.检查到资源更新完成则判断是不是更新到补丁
7.如果更新到补丁就进行解压并且拷贝到指定app目录
8.没有更新到补丁则完成更新流程

368

被折叠的 条评论
为什么被折叠?



