闲言
前段时间着做安卓的混合开发,研究了一下app升级的解决方案,再对比了之前在宁波银行做IOS混合开发的app升级方案,在此做一些总结。
概述
其实更新app,大体都是这个思路:检测、下载、安装。
具体:
1.去服务器获取最新的版本号,对比当前包(apk or ipa)的版本号。
2.当前版本号 < 最新版本号,去服务器下载包(apk or ipa)。
3.下载后,进行安装(ios系统需先下载描述文件并信任)。
更新方式
从产品角度出发为了用户体验好,如更新速度快、消耗流量少等,我们必须在一些步骤上做优化。
这就要提到强制更新、非强制更新、全量更新、增量更新这些名词了,关系如下:
前两者即字面意思就不多赘述了。我简单总结后两者。
全量更新
下载整个包。
升级方式:将整个工程生成的新包,放到指定的服务器或者应用市场,供移动端请求下载安装。例如:将ipa包发布到应用商店、apk包发布到安卓应用市场、提供二维码请求下载新版本安装包等。
增量更新(热更新)
通过diff/patch 算法对比新旧版本差异,然后得到差异包(补丁),仅仅下载差异包,然后将差异包+旧版本包最后得到新版本包。
模式如下:
server:
delta = diff(original, update)
transmit delta
client:
receive delta
update = patch(original, delta)
升级方式:将差异包放到指定的服务器,供移动端请求下载安装。差异包和旧版本整合得到新版本是通过移动端系统的原生代码实现的。例如:webpack打包后得到dist文件放到服务器,移动端更新时会去请求这些静态资源。
总结
当下更新的app的渠道多种多样,其实都离不开之前说的三步。差异主要在于用户体验和业务场景。当下互联网的快速迭代被产品经理崇尚,而银行IT也纷纷效仿,基本每个月都会进行新版本发布,增量更新减少了用户和软件开发者的带宽费用、减少了下载时长,基本是首选方式。