腾讯bugly热更新

一、热更新完整接入流程

· 1.打基准包安装并上报联网(注:填写唯一的tinkerId)

· 2.对基准包的bug修复(可以是Java代码变更,资源的变更)

· 3.修改基准包路径、修改补丁包tinkerId、mapping文件路径(如果开启了混淆需要配置)、resId文件路径

· 4.执行tinkerPatchRelease打Release版本补丁包

· 5.选择app/build/outputs/patch目录下的补丁包并上传(注:不要选择tinkerPatch目录下的补丁包,不然上传会有问题)

· 6.编辑下发补丁规则,点击立即下发

· 7.杀死进程并重启基准包,请求补丁策略(SDK会自动下载补丁并合成)

· 8.再次重启基准包,检验补丁应用结果

二、具体操作流程

1.配置基准包的tinkerId


注意:基准包和补丁包都需要指定一个tinkerId号,基准包的tinkerId的值可以随意设置,但必须保证其唯一性。但在设置补丁包的tinkerId时,要保证不能与基准包tinkerId的值相同。

 

执行assembleRelease编译生成基准包:


这个会在build/outputs/bakApk路径下生成每次编译的基准包、混淆配置文件、资源Id文件,如下图所示:


启动apk,上报联网数据

我们每次冷启动都会请求补丁策略,会上报当前版本号和tinkerId,这样我们后台就能将这个唯一的tinkerId对应到一个版本,大家测试的时候可以打开logcat查看我们的日志,如下图所示:


注意:如果看不到log打印,我们要将Bugly的初始化的第三个参数设置成true。

2、对基线版本的bug修复

未修复之前



修复之后


3、根据基线版本生成补丁包

修改待修复apk路径、mapping文件路径、resId文件路径



执行构建补丁包的task


生成的补丁包在build/outputs/patch目录下:



最后找到工程目录将生成的补丁包上传到腾讯Bugly平台,之前安装该apk的客户端,再次打开该应用的时候就会自动加载补丁包。如下图所示:

未下载补丁包前:



杀死应用,再次打开app成功加载补丁包后:


补丁包热更新成功后,客户端应用的界面布局发生了改变

注意事项:

1、当我们在原有的工程中重新创建了UI线程的时,此时的热更新就无法实现了。解决办法将应用版本升级,重新生成基准包(ps:该基准包的tinkerId不要与低版本基准包的tinkerId相同),在该版本的基础上来生成补丁包实现热更新。

2、热更新和应用升级同时存在时,应用升级的优先级高于热更新。

3、某一版本下发布了多个补丁包,客户端的应用程序会直接下载最新的发布的补丁包。

4、腾讯Bugly热更新支持补丁包的回退,例如:我们在基准包的基础上发布了补丁包一,客户端应用成功热更新后,我们将发布的补丁包一进行撤回,此时再打开客户端应用,该应用将自动回退到热更新之前的状态。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页