应用升级服务端设计思路设计

发布时间:2019-03-17 20:45:15  作者:本站编辑  来源:本站原创  浏览次数:


前言

去年支付宝集福卡活动玩出新花样,增加了一种花花卡,豪称全年帮你还花呗,一时火热。听到很多人在说要花花卡时,不准备玩集福卡的我准备再玩一把。进入页面功能点直接系统提示版本过低,使用此功能先更新应用程序。瞬间没有劲头了,还是让其他小伙伴多点中奖机会吧。


目前智能手机随处可见,功能越来越强大。手机的电话、短信功能逐步弱化,被各种APP 取代。一款智能手机中安装数十个APP很常见。日常生活、工作使用的APP 问题修复或者增加新功能 频繁更新,安装包逐步变大,下载时间长对用户来说是一种很糟糕的体验。所以现在各大应用市场基本都采用了增量更新的方式,减少数据传输量,提供用户体验。


主流的手机操作系统有安卓和IOS,应用都会开发这两个平台的版本。安卓应用存在很多发布渠道,也可以官网自行发布,存在很多操作空间。鉴于IOS app store 有比较建全的规则,本文关注安卓应用升级服务端设计。


服务端接口设计

用户在手机端进行操作触发服务端升级检测请求,或者服务端向客户端推送升级信息。这两种途径都需要服务端提供一个升级检查接口。客户端向服务端提供当前版本信息来检查获取是否需要更新以及更新包地址、更新内容等信息。在接口设计过程中需要注意以下几点:


1,检测升级请求内容包含包名称、当前版本号。

2,服务端检测后返回是否升级,如果升级,则必须有升级版本编码、升级版本、升级描述、升级包地址、包大小等。

3,如果有升级,服务端进行业务判断,是否强制升级。根据大小版本判断或者业务定义。

4,如果有升级,升级检测结果中需要有升级文件签名。客户端下载文件后和接口返回的签名进行比对,增加安全性控制。

5,升级包地址可进行封装处理,使用同一的路径 比如***/latest。涉及服务端临时跳转。


增量更新实现

增量更新就是将手机上已安装apk与服务器端最新apk进行对比,得到两个版本的差异文件及差分包,用户更新程序时,只需要下载差分包,并在本地使用差分包与已安装apk,合成新版apk,节省服务器和用户的流量。例如,当前手机中已安装微博V1,大小为12.8MB,现在微博发布了最新版V2,大小为15.4MB,我们对两个版本的apk文件差分比对之后,发现差异只有3M,那么用户就只需要要下载一个3M的差分包,使用旧版apk与这个差分包,合成得到一个新版本apk,提醒用户安装即可。


我们使用开源库bsdiff 生成差分文件。需要注意的是bsdiff 区分windows 和linux 版本。使用java开发,将使用到JNI调用bsdiff方法。.


总结

本文为服务端更新功能基础实现设计思路,不涉及客户端实现策略。虽然一个小功能,具体实现时候还是有很多细节需要注意,如接口的并发支撑、后台安装包生成、异步上传以及安装包下载等,有兴趣的小伙伴可以详细研究。



热搜