前提
当前APP版本2.1.301,需要基于该版本打热修复包版本2.1.302
基准包:2.1.301
热修复包:2.1.302
热修复打包流程
1、拉取bugfix分支,先通过"package.sh",或"package_b.sh"打出基线包。
打包完成后,会在build/bakApk/app-xxxx/Baby目录下生成基线包的"xx-mapping.txt","xx-R.txt,xx-2.1.301.apk",如下:
2、修改代码,修复bug
3、修改tinkerpatch.gradle的baseApkDir和apkName
tinkerpatch.gradle是tinker的配置文件,首先确保步骤2中的目录结构正确
修改baseApkDir:app-1116-16-46-03
修改apkName:malt-baby-Baby-v2.1.301.apk
4、修改gradle.properties中的versionName和versionCode,必须升级版本号。本次示例中:基准包版本2.1.301,热修复版本2.1.302。
VersionCode=201302
VersionName=2.1.302
5、执行热修复脚本,执行完成后会在项目根目录/apks-patch生成patch包
C端:./package_patch.sh
B端:./package_patch_b.sh
如果出现如下问题,解决方案。
Execution failed for task ':app:tinkerProcessTeacherReleaseResourceId'.
> java.io.FileNotFoundException: /Users/listen/Documents/AndroidStudioWorkSpace/MaltBaby-Android/app/build/intermediates/tinker_intermediates/values_backup
6、登录bugly热修复发布平台,选中步骤5中生成的“baby_patch_signed_7zip-v2.1.302.apk”文件,点击“立即下发”,生效时间大概1-2分钟。(发布热修复补丁需要管理员权限,可以找@小枫开通)
7、长链下发patch更新消息,把以下json串发给@鸣人:这步操作用于主动触发patch更新的检查,并在补丁安装完成后弹框提示用户重启生效。如果没有该步骤,则用户需要2次重启才可以生效patch,第一次重启下载并安装,第二次重启补丁才生效。
后台默认更新:补丁安装完成后不会提示用户,下次重启APP后生效
{
"type":"PATCH",
"model":{
"versionCode": "201302",
"versionName": "2.1.302"
}
}
弹框提示用户:补丁安装完成后,显示提示弹框,并引导用户重启APP立即生效
{
"type":"PATCH",
"model":{
"versionCode": "201302",
"versionName": "2.1.302",
"showDialogNotifyUser": true,
"dialogConfig": {
"cancelable": false,
"title": "更新提示",
"content": "APP有重要补丁需要更新,重启后生效哦~",
"confirm": "立即重启",
"confirmToRestart": true
}
}
}
8、通过getAppGlobalConfig接口下发patch信息,可以联系@杰斯,修改patchJson字段的json数据。可以保证在启动时,可以及时检查补丁信息。
"patchJson":"{\"versionCode\":\"201302\",\"versionName\":\"2.1.302\"}"
"patchJson":"{\"versionCode\":\"201302\",\"versionName\":\"2.1.302\",\"showDialogNotifyUser\":true,\"dialogConfig\":{\"cancelable\":false,\"title\":\"更新提示\",\"content\":\"APP有重要补丁需要更新,重启后生效哦~\",\"confirm\":\"立即重启\",\"confirmToRestart\":true}}"
9、验证:进入TestAppAct页面,有个“检查tinker补丁”按钮,点击检查最新补丁;或者重启APP,会在后台默认升级patch。
参考:
Bugly 热更新发布平台
Bugly Android热更新使用指南
Bugly Android热更新详解
热更新相关代码:com.enjoy.malt.app.HotfixManager
热修复黑名单机型
Inlined method resolution crossed dex file boundary(发布补丁后,NativeCrash率会提升)
Android-10:荣耀 PCT AL10,荣耀 AKA AL10,VIVO V1932A,VIVO V1829A,红米 REDMI NOTE 8
Android-9:华为 PAR AL00