Unity增量更新BsDiff(也适用于整包的增量更新)

来源:互联网 发布:json格式的验证工具 编辑:程序博客网 时间:2024/05/17 08:15

前段时间一直在研究增量更新的事情,今天拿来和大家分享一下。相对于传统的热更新,增量更新有明显的优点。

游戏在发布后,基本都是以bundle的形式加载资源,如果后期我们在一个1M的bundle里更新了一个1k的资源,对于普通的热更新,这个bundle都是要更新的,用户需要下载整个1M+1k大小的bundle来替换旧版本1M的bundle。bsdiff增量更新的原理在于,它会将新的bundle与旧的bundle进行二进制对比,提取出二进制不一样的地方,也就是那1k的新增资源,用户直接下载这1k的资源到本地,然后再与用户本地旧的资源进行二进制合并,合并出那个1M+1k的新bundle,这种方法极大的减少了用户的下载量。

听到这里小伙伴们是不是心动了呢,感觉好牛逼的样子。这里小编我就要泼一盆冷水了,可能有些同学已经想到了,二进制合并是很耗性能的,这就需要对手机的性能做一些考虑,前几年手机性能普遍不行,虽然这个技术出来很早,但是大家都不敢用,但是今年为止,手机性能已经不知道翻了多少倍,市面上已经有很多大厂使出了这项技术,而且反应还不错,不然小编怎么会费劲的去研究它嘞。


目前的增量更新,大多数都是使用的bspatch框架,这是框架的github地址:

https://github.com/mendsley/bsdiff


是用C写的,而且是linux环境,我们再unity中不可以直接使用,小编修改并移植到window环境,并导出了dll,可以直接放在游戏中使用,这个过程就不讲述了,太过繁琐和费劲,相信大家也没有多大兴趣。下面主要讲讲怎么用这个导出的dll,官方有提供exe格式的,可以直接进行测试。

使用起来真的是超级简单,总共就两个接口

1.导出增量差异包

这是在C#中对dll的引用


oldFile:旧包资源路径

newFile:新包资源路径

patch:导出的新包与旧包的资源差异包存放路径(导出)


2.合并差异包


oldFile:旧包资源路径

newFile:生成的新包资源存放路径(导出)

patch:新包与旧包的资源差异包路径


路都已经铺好了,是不是用起来很简单,这种方式理论上适用于所有的文件类型的增量更新哦,也就是说如果两个apk只有一少部分有差异,也是可以根据这个技术让用户下载极少量的资源进行更新安装新包的哦,是不是很牛逼,下面是导出的dll和so文件的链接(没关注公众号的记得关注下)


链接:https://pan.baidu.com/s/1qXJH6m4 密码:7l2v


此外,有其他方面需求的同学请直接在下方留言,小编尽量满足你们,或者可以加入我们的unity学习交流qq群:586033621,这里有一大票的小伙伴一起和你探讨,有些失效资源有时小编并不能很及时的更新到百度分享群,可以直接在群里问其他同学要,大家共同学习进步。


原创粉丝点击