首页 > 系统 > Android > 正文

Android增量更新(1)

2019-11-08 00:19:49
字体:
来源:转载
供稿:网友
背景        随着android应用体积的不断增大,以及应用版本发布的不断更迭,用户的升级成了一个问题,google也意识到不断更新应用对用户流量的损耗,在Google I/O 上提及的 Smart App update,即应用增量升级,或者叫做差分升级的做法,并在新版本的Google Play中得到支持,某天在和群友聊天是扯到这方面的话题,好奇就稍微研究了一下。增量更新:减少下载流量。增量更新:1。用户提取以前的old.apk2. 如何从old.apk和new.apk中提取增量文件(查分patch)。(理论上是服务器那边操作)3,使用增量文件与old.apk文件进行合并如果能解决以上3个问题就,ok了。核心知识为 第二点和第三点,增量更新注意一点,版本的控制增量文件的提取和合并android 提供了我们制作增量更新的工具 " bsdiff"这个是一个开源的二进制查分工具,相关的代码地址 或者在android的代码目录下 /external/bsdiff使用 bsdiff工具生成 patch文件下载 bsdff包 解压打开cmd 使用 命令 bsdiff old.apk news.apk test.patch 如图生成差分包 test.patch ,把这个差分包上传到服务器,提供用户下载,不同的版本,生成不同的差分包。   用户在下载了 xx.patch补丁包后,需要用到补丁所对应的apk,即原来系统安装的旧版本apk和补丁合成的bspatch工具。系统旧版本的apk可以通过copy系统data/app目录下的apk文件获取,而补丁合成的bspatch可以通过将bspatch源码稍作修改,封装成一个so库,供手机端调用。使用cmd命令来合并一个新的apk bspatch 1.apk new2.apk test.patch 如图 生成 new2.apk检验合成的news.apk 和2.apk是否一样,使用命令查询2个文件的md5值是否一样certutil -hashfile 2.apk MD5>certutil -hashfile news2.apk MD5不足     增量升级并非完美无缺的升级方式,至少存在以下两点不足:    1.增量升级是以两个应用版本之间的差异来生成补丁的,你无法保证用户每次的及时升级到最新,所以你必须对你所发布的每一个版本都和最新的版本作差分,以便使所有版本的用户都可以差分升级,这样操作相对于原来的整包升级较为繁琐,不过可以通过自动化的脚本批量生成。    2.增量升级成功的前提是,用户手机端必须有能够让你拷贝出来且与你服务器用于差分的版本一致的apk,这样就存在,例如,系统内置的apk无法获取到,无法进行增量升级;对于某些与你差分版本一致,但是内容有过修改的(比如破解版apk),这样也是无法进行增量升级的,为了防止合成补丁错误,最好在补丁合成前对旧版本的apk进行sha1sum校验,保证基础包的一致性。参考 文章 地址 http://blog.csdn.net/hmg25/article/details/8100896

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表