## 一、更新当前线上版本的bug或重要的小功能
### 重要的几点
1. 此版本必须在代码版本控制系统里找到对应的tag,然后进行修复bug。不能在现有开发版本上进行操作。
2. 修复bug后,部署热更新到Staging测试环境中,测试通过后,升级环境到Production正式环境中,并且考虑是否要进行灰度更新
3. 线上用户反馈bug没修复或导致其他问题的时候,立即回滚Production到前一个label,然后再执行上面的步骤,直到bug修复成功。
![](https://box.kancloud.cn/8a1be243dbbd8cd7de7318e712eab192_1209x307.png)
如图:label v4 就是v3 回滚到v1的新版。
4. 灰度更新没问题后,发布100%更新,然后将代码合并到主分支上,然后将主分支代码合并到开发分支上,继续开发!
## 二、和App内版本更新的对比
1. app内部更新通过版本号;热更新通过版本名称
2. app内部更新机制:接口返回的版本号大于App内部版本号时,说明有新版本,然后进行后续更新
3. 热更新机制:发布更新时填写的版本名称和app内部的版本名称处于下列规则时,进行更新
![](https://box.kancloud.cn/14d5c93a6da4803aa9f8473d8f21c08d_788x480.png)
4. app内部更新需要弹框提示升级;热更新则是静默更新,用户感知不到。
5. app内部更新可以更新任何修改的东西;热更新只支持修改Js及资源文件。Android和IOS原生代码不支持
## 三、和现有版本更新整合
**线上版本是2.7.1 ,版本号14**
* 热更版本2.7.1 ,版本号14
* 版本更新2.7.2, 版本号 15
**App请求 版本更新接口:**
* 接口返回的版本号=14,无新版本->热更
* 接口返回的版本号 =15,有新版->提示是否更新->否--热更,是->版本更新
* 接口返回的版本号 =15且是程序允许的最低版本,有新版->提示强制更新
![](https://box.kancloud.cn/4b4bcd287ced0322d6f825566ad4e2ad_1712x589.png)