Creator热更新方案,弃用官方方案,采用增量zip方式

楼上说了这么多理论,实际去用用,看看效果,官方案例简单,兼容性强。用了你就知道优点

针对这种方式,你说担心的确实存在,但一个项目如果采取了这样的方式进行热更新,会配合其它的手段来让这100个版本缩小再缩小,比如从100个缩小为只维护10个

没懂你里边说我的方案里边说老用户走更新,新用户走新包的方式?
我只是把差异化的内容都整合到zip进行增量更新,并且去重,最终下载的内容跟你们差异化对比更新没任何区别,该下的文件不多不少,你们多版本时用差异化方案怎么处理的,改用zip也可以一样处理方式吧。
至于分版本文件夹管理看项目需求非必须(另外不否认官方方案的普适性)

1.0 版本 出了 一个1.apk
1.1 做了一版热更 1.1.zip
1.2 做了一版热更 1.2.zip 并出了一个2.apk
1.3 做了一版热更 1.3.zip
请问2.apk 需要更新那些内容,
第一种方式如果只更新1.3.zip,那么你的2.apk的manifest就记录曾经zip的所有信息
第二种方式直接将1.1.zip,1.2.zip, 1.3.zip都下载,那么资源重复了
第三种方式每个apk走独立的热更,那多个版本的app的维护就很困难了
同时,因为你过往的zip都是动态变化的,势必不能做md5比较,那么资源的完备性,你也无法保证。

另外,如果使用了cdn,因为你过往的zip是动态变化的,cdn刷新时效性,也会造成问题,本质来讲,除了第三种方式解决问题外,另外两种处理方式还存在bug

第一种方式如果只更新1.3.zip,那么你的2.apk的manifest就记录曾经zip的所有信息

针对你说的3种方式,那我这里用的第一种吧
1.apk,2.apk都会下载1.3.zip,2.apk出包时是有包含以前发过的1.1,1.2的热更资源(因为每次出热更包,都会全部zip重新整理,并不存在重复资源,这点是区别于普通增量更新的点。)
我的apk并不存储manifest等文件,文件md5列表数据是存储在本地的,zip的整理也是在本地整理最后全部上传,游戏只是负责根据当前版本号拉取并下载解压zip就行,你的后半句我还是有点不太明白,包含了会有影响吗?

同时,因为你过往的zip都是动态变化的,势必不能做md5比较,那么资源的完备性,你也无法保证。

另外,如果使用了cdn,因为你过往的zip是动态变化的,cdn刷新时效性,也会造成问题,本质来讲,除了第三种方式解决问题外,另外两种处理方式还存在bug

至于zip动态变化,md5的比较,cdn刷新时效性问题,目前我游戏热更模块暂没用到cdn可能没发现这问题,但这些通常可以辅以方法,修改zip名字,加字段参数,动态参数等强制刷新吧(我是还有个json字段记录全部版本文件信息),这点也不是zip独有的吧,可能还有其它我没发现的问题?

非强更下,普通换包我的1.apk跟2.apk都是运营的同一套热更资源,也比较好维护,公司项目也平稳运行几年了,热更模块一直正常,可能你的是完全不同的多版本在同时运营?所以版本多了热更麻烦?

你所说的这几点,我是好奇用官方差异化更新方案不也存在同样的问题吗,能适用你的项目吗,除了下载的内容不同,不也是一样的处理方式?

1赞

1, md5.bin 是项目构建后成生的res , src 所有文件的md5, md5.bin仅供工具生成差异文件使用,游戏不下载些文件, 在生成zip的时候会自动生成wconfig.json文件。 在打apk时会带上这个wconfig.json版本配置文件,每次更新后会下载CDN最新的wconfig放在缓存目录下。

2,远程检测版本文件是提供热更地址和其他下载信息的文件
/*
file:checkVersion.json

  • {
    “download”:true, //下载安装包开关
    “hot”:true, //热更开关
    “version”:“8.4.1”, //低于此版本的安装包,则会下载APK安装包(内部进度条下载)
    “fixVersion”:“5.0.0”, //低于此版本的安装包,通过外部浏览器下载整包(特别情况解决不兼容问题)
    “size”:77614126, //安装包文件大小(字节)
    “url”:“remote/path/to/apk”, //远程安装包(商店)地址
    “hotUrl”:“remote/path/to/hot/channel/”, //远程热更目录
    “whitelist”:[“0.0.0.0”] //IP白名单,测试用,可以在关闭热更、下载开关时,更新、下载
  • */

楼主的思路跟我在用的差不多,md5.bin(我这里叫其它名字)在出apk包时同步构建的,仅供工具生成差异文件使用,游戏不下载这些文件,后续每次发热更时都会同步有一个cache文件夹记录发的热更文件(在你这是bin文件)

不知你的增量更新有做清理重复文件吗,当你发热更最新到8.5.0.2时,可以与该版本对比,清理往前版本如8.5.0.1版本zip中重复的文件,若清理后zip为空则删掉zip,json里边同步好就行。

1赞

支持mark

目前没有,因为之前的思路是遇到长期不上线的,低于某个版本会让他下载最新包。因为我们的整包去掉动态资源后控在70M左右,不会太大,后面会考虑再优化下

我做过一个版本的zip更新大概方案是
系统保留 10最近最近版本的Patch, 这样大部分用户可下载更新包进行更新
1.0.0 -1.1.0.zip, 1.0.1-1.1.0 … 这样用户在 1.0.0 ~ 1.0.9的用户只要下载每个版本差异就行。
0.9.0 ~ 1.1.0 打一个整包
0.8.0 ~ 1.1.0 打一个整包
再打一个全量包。
这样服务器每个版本只要存在 10个最近版本的更新包 + 两个大版本更新包 + 一个全量包
30个版本基本可以满足了
Apk打包时 打服务器最新版本全量包拉到本地打包进去

坐等更新,大神指点下

几个月过去了 也没看到实践方案,楼主等您的分享呢

mark…

除了王者荣耀,其他游戏用这个方案,更新必定丢失大量用户!

mark~~~

已经发布 有需要去商城下载 增量热更新 | Cocos Store

支持2.4.4吗?

支持, 只要是creator

一直没时间整理出来,现在已经在上传到商城发布了,有需要的小伙伴支持下。 增量热更新 | Cocos Store。由于时间原因写的不够详细,README.md 有具体的说明