APP 补丁升级策略

APP 现有的自动升级模式是,根据获取 APK 本地的版本信息与服务器接口返回的版本信息进行对比,如果服务器版本信息比本地的新,APP 会弹出有新版本的提示,用户同意升级后,下载新版本进行安装。 现为了更快的修复 bug,降低升级周期,决定引入微信的 Tinker 热补丁功能。

策略描述

现有的 APK 已经有基本的版本升级模式,这里姑且就叫做基础包升级。现引入微信的 Tinker 热补丁功能,微信的 Tinker 功能很强大,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新 Tinker 官方文档 。在项目中,发布的补丁包是基于 Tinker 的,基于某基础包打的补丁,不可以将该补丁应用于不同基础包版本。例如,补丁包是基于基础包版本为 1.0.0 的,则不可以将补丁运用于基础包版本为 2.0.0。

现与后台约定的升级策略是:

  • 后台会确保服务器上保留的是最新的基础版本和最新的补丁版本,不会有旧版本存在;
  • 有基础包升级,则升级基础包,没有基础包升级再判断是否有补丁包升级;
  • 不可以安装不基于自身基础包的补丁。

升级状态列举

这里列举出具有代表性的几种状态:下载第一个基础包版本(支持热补丁功能)-->发布第一版本的第一个补丁-->发布第一版本的第二个补丁-->发布基础升级包版本二-->发布基于版本二的第一次补丁包,我们将对这几种情况进行分析归纳。
这里为了方便,下文将基础包用缩写 “B” 来代替;补丁包用缩写 “T”来代替。如,基础包版本 1.0.0 表示为 B1.0.0;基于 1.0.0 基础包发布的第一补丁版本 1.0.0.1 表示为 T1.0.0.1 。

一、服务器发布第一个基础包版本为:B1.0.0

服务器上包的状态: 基础包版本:B1.0.0      补丁版本:无
用户行为及手机中包的状态:
某用户下载了第一基础包版本,此时用户手机里安装了第一版本,没有补丁包,用户手机中存有的包状态如下:

基础包版本 补丁版本
1.0.0

项目拥有的总用户状态:整个项目的用户状态目前只有一种。

二、服务器发布基础包 B1.0.0 的第一个补丁包: T1.0.0.1

服务器上包的状态: 基础包版本:B1.0.0    补丁版本:T1.0.0.1
用户行为及手机中包状态:
发布基于基本包 B1.0.0 的补丁包 T1.0.0.1 时,用户的升级行为有:新用户下载、现在项目拥有的用户状态为拥有基础包 B1.0.0 升级补丁包 T1.0.0.1两种行为。

服务器发布基于 B1.0.0 的第一个补丁包升级各状态

图中项目总状态中,用紫色字体标出来的,是这次升级中在原有系统用户状态增加的新用户状态。目前项目最多拥有两种状态的用户。

三、服务器发布基础包 B1.0.0 的第二次补丁包: T1.0.0.2

服务器上包的状态: 基础包版本:B1.0.0    补丁版本:T1.0.0.2
用户行为及手机中包状态:

服务器发布基于 B1.0.0 第二次补丁包升级各状态图

从上图中看出,用户共有三种升级行为,升级后系统在原来的用户状态上又增加了拥有基础包 B1.0.0 和 补丁包 T1.0.0.2 状态的用户,现在系统中最多有 3 中不同状态的用户。

四、服务器发布基础包 B2.0.0

服务器上包的状态: 基础包版本:B2.0.0    补丁版本:T1.0.0.2
用户行为及手机中包状态:

服务器发布基础包 B2.0.0 升级各状态图

从上图可以发现,发布基本包更新的时候,不管用户现在拥有的是哪种包状态,用户的更新行为都是下载新版本的基础包。升级后,系统最多又可以增加三种用户,如上图紫色标出的。

五、服务器发布基础包 B2.0.0,发布第一次补丁 T2.0.0.1

服务器上包的状态: 基础包版本:B2.0.0    补丁版本:T2.0.0.1
用户行为及手机中包状态:

服务器发布基础包 B2.0.0,发布第一次补丁升级各状态

从上图可以看出,低于服务器基础包版本的用户,如果想要升级,只能升级新的基础版本,而不能升级补丁。

升级状态分析

随着我们发布的基础版本和补丁版本越来越多,系统拥有的用户状态也越来越多。不过从上面我们列举的用户升级状态图中可以看出,不管系统中用户的状态有多少种,都遵循我们的升级原则。升级状态列举的 5 种,我们这里最终可以总结归纳为两种:相同本基础包打补丁、不同基础版本间的升级。当本基础包版本与服务器基础包版本相同时,此时如果有基于该版本的补丁则下载补丁升级;如果服务器的基础版本比当前手机安装的版本高时,就是不同基础包版本升级,下载最新的基础包安装。最后用一段伪代码表示即:

if(基础版本 < 服务器基础版本){
    下载最新基础版本
    //……
}else{
    if(本地补丁包版本 < 服务器补丁包版本  && 该补丁包是基于本地补丁包版本的){
        下载补丁包
        //……
    }
}

清楚升级过程中会存在哪些用户状态后,有利于我们编写相应的测试用例,对不同的用户状态进行升级补丁策略测试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,451评论 25 707
  • 开头的话 不管怎么说,我自己也是蛮不喜欢快餐文的,但可能是心里一直在所谓“完美结局”的窠臼里。 总不愿意面对那么多...
    青山枫阅读 239评论 0 0
  • 黑熊/文 微信也来卖保险了。这个应该有一部分朋友知道了吧? 还没注意的朋友,可以点击微信的钱包,之后,就可以在右下...
    黑熊爱折腾阅读 618评论 0 0
  • 四十不惑,很多人到了四十岁以后,就开始掉头发了,所以治疗脱发的广告是非常多的,当年某个101就把广告打的全国都知道...
    开心的灵通阅读 290评论 3 2
  • 我喜欢跑步,是让室友非常难以理解的事,她们觉得三十多度的高温,不在寝室里享受空调,偏偏要跑出去晒太阳,搞得满身臭汗...
    豐鹭阅读 210评论 0 0