吉游网提供最新游戏下载和手游攻略!

Android应用市场高效省流量的增量更新机制揭秘

发布时间:2024-10-02浏览:49

大家好,感谢邀请,今天来为大家分享一下Android应用市场高效省流量的增量更新机制揭秘的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

二、原理分析

上面的省流量更新原理可以这么理解:服务端可以借助bsdiff工具,比对新旧apk包的文件,获取到差分文件之后下发到客户端,而这个差分文件的大小肯定是小于新的apk文件大小的。客户端得到这个差分文件之后,本地在使用bspatch工具进行差分文件和本地已经安装的旧apk包进行合并成新的apk包文件,然后在进行升级安装。

在这个过程中,客户端在访问服务端的时候可能需要携带旧apk包的md5,应用包名,版本号等信息,服务端获取到之后会去数据库中查询其对应的本次需要升级的apk包以及旧版本号对应的旧apk包,然后进行差分处理得到差分文件,在下发到客户端即可。

三、案例代码分析

上面了解了原理之后,下面就直接看通过源码进行操作吧,前面已经说过了,bsdiff和bspatch这个功能源码是开源的,可以从网上查找,关于他们的源码这里不做太多的介绍,因为是纯C代码,分析起来没什么意思,可以自行阅读即可,因为是纯C语言的,所以如果我们想在Android端使用的话那么就需要使用NDK进行开发了,需要在上层用native方法进行关联访问,这个其实也没什么大的问题,而关于服务端那边进行文件差分操作,这个已经有现成的工具了,也是用C语言编译的可执行文件。所以下面第一步先来解决客户端的NDK开发工作:

第一步:定义native方法

这个native方法还是比较简单的,参数也很容易理解,新旧apk包路径,差分包路径。

第二步:使用javah生成头文件

注意:这里的命令是运行在源码src目录下,采用的类全名方式生成的。会在当前目录下生成对应的头文件:

第三步:新建jni目录

右击项目,选择Android Tools=》Add Native Support,点击下一步即可,在项目中会生成一个jni目录,然后我们把上面生成的头文件拷贝到这里,同时把网上找到的bsdiff和bspatch源码也拷贝到这个目录下:

然后记得添加编译脚本mk文件即可。

第四步:编写native层代码

这里代码非常简单,把上层传递的参数直接传入到applypatch函数中即可,相当于我们什么都不用做。

第五步:使用编译之后的bsdiff工具生成差分文件

在这个目录下运行命令:

bsdiff.exe demo_old.apk demo_new.apk demo.patch

然后生成了demo.patch文件,我们可以将其拷贝到sdcard目录下。

第六步:客户端编写代码进行差分文件合并

这里通过sdcard目录下的旧apk文件和生成的patch文件进行合并工作,生成新的apk文件,生成之后直接进行升级安装。

注意:这里我们为了懒,把旧apk直接拷贝到sdcard目录了,而在实际开发中我们应该通过系统提供的方法直接获取已经安装应用的apk文件路径的:

四、运行结果

上面的代码已经编写完成了,下面就直接运行即可,会自动编译native的代码:

然后运行结果:

这样就简单实现了应用的增量升级了。而这个技术在后面介绍Tinker框架的时候会涉及到,他内部做了差分文件也是借助这个工具来进行操作的。

项目下载地址:

https://github.com/fourbrother/android_diffupdate

五、总结

现在的热修复框架都会涉及到修复文件,而这个文件现在都可能叫做差分文件。就是需要真正修复问题的文件包。这个技术在早期应用市场中的省流量升级已经体现出来了。

手机看文章有点费劲,可以进入网页版:http://www.wjdiankong.cn

用户评论

夏日倾情

这篇文章讲解得很细致啊!我现在下载新版本APP的时候感觉是不是加载速度明显快好多?之前一直在烦恼流量费用问题,这个小技巧真是太棒了!

    有20位网友表示赞同!

海盟山誓总是赊

我一直以为Android应用市场省流量就是软件本身优化好,没想到还能使用“增量升级”这种方法。以前更新安卓应用总是担心流量用完,现在看来可以放心多了。

    有12位网友表示赞同!

愁杀

感觉这篇文章说的很通俗易懂,即使对技术不太了解的人也能明白原理。我终于知道为什么我的手机下载新版本软件不需要消耗那么多流量了,真是感谢作者的科普!

    有10位网友表示赞同!

疯人疯语疯人愿

我一直觉得一些大应用更新后体积太大,占用空间太多,影响手机运行速度。这个增量更新机制能解决一部分问题吧?不过不知道效率会不会太低,影响更新速度。

    有18位网友表示赞同!

炙年

这篇文章内容很实质性。我经常遇到这种情况,想要更新APP却怕流量用完。以后可以尝试学习一下增量升级的技术,也许能帮到我。真是一个好方法!

    有6位网友表示赞同!

有一种中毒叫上瘾成咆哮i

"省流量"和"快速更新"确实很吸引人的功能,但是我不确定这个增量升级机制会不会对软件安全造成影响吗?有些关键的更新安全性会不会降低?

    有7位网友表示赞同!

千城暮雪

感觉这篇文章讲的太浅了,我更想了解增量更新是如何检测软件变化、分发更新包的具体操作流程。能不能详细点解释一下呢?

    有14位网友表示赞同!

安之若素

我一直觉得安卓应用市场的更新机制还是比iOS 要落后很多,期待Android也能像iOS一样,在安全性保证的前提下提供更加流畅快速的更新体验。

    有13位网友表示赞同!

素婉纤尘

现在越来越关注手机安全问题了,增量更新会不会带来新的安全隐患呢?需要好好考虑一番才能决定是否使用这个功能.

    有17位网友表示赞同!

拥菢过后只剰凄凉

我觉得这个"省流量更新"的功能真的很棒!但是希望开发商在开发APP的时候,能够尽量压缩软件体积,减少用户下载和更新的负担。

    有9位网友表示赞同!

何年何念

文章内容不错,很明确地讲解了Android应用市场的“省流量更新”以及增量升级的概念。希望能有更多这类深入讲解的技术科普文章。

    有17位网友表示赞同!

话少情在

这个増量升级机制听起来不错,也许可以减轻用户的流量压力,同时也能提高更新效率。我倒想看看这两种功能结合在一起的效果如何。

    有13位网友表示赞同!

怪咖

虽然这篇文章解释得很清楚,但我还是不太明白为什么安卓应用市场还需要依赖这种增量升级的方式来省流量呢?难道传统的方法真的那么吃流量吗?

    有7位网友表示赞同!

雨后彩虹

我觉得这个"增量升级"对开发商来说也是有利的,可以节省服务器带宽资源,提高更新效率。希望未来更多APP开发者都能采用这种方式更新应用。

    有18位网友表示赞同!

你tm的滚

手机越来越智能化了,软件的功能也越来越多复杂化,这样就更容易导致安装包体积变大,需要这种增量升级机制来减轻用户的负担才能更好用!

    有7位网友表示赞同!

关于道别

之前没想过Android应用市场有这种“省流量更新”机制,现在看来这个技术真是太棒了! 它能让我们在享受最新应用功能的同时节省大量流量费用。

    有14位网友表示赞同!

┲﹊怅惘。

这篇文章让我了解到很多以前都不清楚的知识点。希望以后还能看到更多关于Android操作系统、应用开发等领域的科普文章,这些都对我们普通人很有帮助!

    有18位网友表示赞同!

热点资讯