手游apk
CDN服务器
OTA系统差分包的制作,使用命令:[html] view plaincopyprint?./build/tools/releasetools/ota_from_target_files -n -i <旧包> <新包> <差分包名>
在查阅ota_from_target_files 的代码可知,是在函数WriteIncrementalOTAPackage里生成差分包的,在这个函数里边创建了common.Difference这个类,我们继续跟进,在common.py中的类 class Difference(object):里可以看到: [html] view plaincopyprint?diff_program = DIFF_PROGRAM_BY_EXT.get(ext, 'bsdiff') 注:'bsdiff',这是一个很牛X开源的二进制差分工具。
将生成的补丁包 xx.patch放置在升级服务器上,供用户下载升级,对应多版本需要对不同的版本进行差分,对于版本跨度较大的,建议整包升级。用户在下载了 xx.patch补丁包后,需要用到补丁所对应的apk,即原来系统安装的旧版本apk和补丁合成的bspatch工具。系统旧版本的apk可以通过copy系统data/app目录下的apk文件获取,而补丁合成的bspatch可以通过将bspatch源码稍作修改,封装成一个so库,供手机端调用。[html] view plaincopyprint?bspatch的命令格式为: bspatch oldfile newfile patchfile
增量升级是以两个应用版本之间的差异来生成补丁的,你无法保证用户每次的及时升级到最新,所以你必须对你所发布的每一个版本都和最新的版本作差分,以便使所有版本的用户都可以差分升级,这样操作相对于原来的整包升级较为繁琐,不过可以通过自动化的脚本批量生成。
增量升级成功的前提是,用户手机端必须有能够让你拷贝出来且与你服务器用于差分的版本一致的apk,这样就存在,例如,系统内置的apk无法获取到,无法进行增量升级;对于某些与你差分版本一致,但是内容有过修改的(比如破解版apk),这样也是无法进行增量升级的,为了防止合成补丁错误,最好在补丁合成前对旧版本的apk进行sha1sum校验,保证基础包的一致性。
手游CP联系爱加密,提供原始包,经过CDN云服务器处理,得到处理过后的apk包。
自动提交渠道,游戏上架,用户开始下载。
若更新是非强制更新,手游会在玩家在WiFi环境下完成静默更新。若更新是强制更新,可以通过CDN加速更新。无需繁琐的渠道-CP-发行配合流程,也不需要停服,玩家在更新过程当中毫无感知。
改善之前需要联系服务商
此经验仅供参考,详细情况需要具体分析