1.配置基准包的tinkerId
(注意这里的base
版本必须联网上报 才可以上传补丁包)
设置你的基准版本号 最好是和app version
对应
2.执行assembleRelease
编译生成基准包
在android studio
的右边选择gradle
找到我们接入热更新的model
进入build
中选择生成的基准包类型:这里可以是Release
和Debug
版本
3.这个会在build/outputs/bakApk
路径下生成每次编译的基准包、混淆配置文件、资源Id文件,如下图所示
这里面有的app-release.apk
就是我们需要上线的基线版本,请注意保存线上发布版本的基准apk
包、mapping
文件、R.txt文件,如果线上版本有bug
,就可以借助我们tinker-support
插件进行补丁包的生成。
3.如果你没有开启混淆是不会有mapping.txt
文件的,需要在Moudle
的build.gradle
文件中开启混淆
怎样生成签名文件这里就不介绍了。
4.对基线版本的bug
修复
上面生成了base
包了,那就需要去生成patch
包了。
基准包的代码:
补丁包(patch
)的代码:
5.根据基线版本生成补丁包
这里需要注意的:基准包目录必须是你上次生成的base
包,注意这里是按照时间命名的,检查能否正确,tinkerId
需要生成patch
包必须使用 tinkerId="patch-base"
版本号对应"
6.执行构建补丁包的task
如果你要生成不同编译环境的补丁包,只需要执行
TinkerSupport
插件生成的task
,比如buildTinkerPatchRelease
就能生成release
编译环境的补丁包。
6.生成的补丁包在build/outputs/patch
目录下,其中7zip.apk
就是我们需要使用的补丁包:
打开补丁包可以看到里面会有一个YAPATCH.MF
,这里面包含了我们是从base
版本到patch
版本:以及app
的version
信息
7.上传补丁包到平台
进入到对应
appid
的app
中,选择应用升级,热更新,发布新补丁。
发布patch
版本,选择补丁文件之后会自动从补丁包的YAPATCH.MF
去寻找base
版本以及app
版本,注意这里的base
版本必须联网上报(必须在联网的情况下启动app
),才可以上传补丁成功。如果没有
上传了补丁包可以选择下发的范围:
- 开发设备:仅仅针对设置了开发设备。
- 利用代码:
Bugly.setIsDevelopmentDevice(this, true);
设置为开发者设备。 - 全量设备:针对所有的用户。
- 自定义:可以设置下发范围:随机下发设置的版本数量,还可以设置
android
版本范围,仅仅在这个范围内才会下发并且生效。
下发补丁之后:
里面包括了激活的用户数量以及下发的数量,在操作过程中我们可能对于上个补丁不太满意,我们需要发布一个新的补丁,
bugly
提供了2中操作。
停止下发:点击之后将不会在下发bugly
补丁,但是之前已经下载并且激活的不会删除掉补丁。
撤回:点击之后将停止下发补丁,并且之前已经下载并且激活的用户将会删除掉补丁包,并且恢复到基准包的版本。
8.检查patch包能否生效
基准包执行效果图:
修复之后的效果图:
如果不能立即生效,需要吧app
至于后台一段时间才能生效
其他相关文章
http://yiweifen.com/html/news/WaiYu/74967.html
https://buglydevteam.github.io/2017/05/15/solution-of-multiple-channel-hotpatch/
https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix-demo/