Bugly 热更新介绍
Bugly 采用 微信Tinker 的开源方案,并集成了自动下载补丁包、合成、并应用补丁的功能,同时提供了管理后台。检查下载补丁包在启动应用时,并在下次启动应用时生效补丁包。
集成 Bugly SDK 请参照官方文档:https://bugly.qq.com/docs/user-guide/instruction-manual-android-hotfix/?v=20181014122344
注意:不能更新
AndroidManifest
文件,参见:https://github.com/Tencent/tinker#known-issues 争议第 1 条
tinker-support.gradle
配置文件主要要修改参数:
// 此处填写每次构建生成的基准包目录
def baseApkDir = "app-0402-18-31-11"
tinkerSupport {
...
// 构建基准包和补丁包都要指定不同的tinkerId,并且必须保证唯一性
tinkerId = "patch-1.81-12"
// 构建多渠道补丁时使用
buildAllFlavorsDir = "${bakPath}/${baseApkDir}"
// 是否启用加固模式,默认为false.(tinker-spport 1.0.7起支持)
isProtectedApp = true
// 是否开启反射Application模式
enableProxyApplication = true
}
- tinkerId 无论是在打基包或补丁包时都要修改该值,并保持唯一性
- buildAllFlavorsDir 构建多渠道打包时用到,默认被注释状态
- isProtectedApp 表示启用加固模式,默认被注释状态
- enableProxyApplication 开启反射 Application 模式,快捷集成 SDK,默认为 false
打包过程
-
生成基包
- 修改 TinkerId 为 base-version
- 生成包
Gradle Projects -> :app -> Tasks -> build -> assembleRelease
- 获取 APK,在
/app/build/bakApk/baseApkDir/flavors/app-flavor-release.apk
-
生成补丁包
- 修改代码
- 修改 TinkerId 为 patch-version
- 设置
baseApkDir
路径为基包的名称 - 生成基包
Gradle Projects -> :app -> Tasks -> tinker-support -> buildAllFlavorsTinkerPatchRelease
- 获取 APK,在
/app/build/output/patch/flavors/release/patch_signed_7zip.apk
注意事项
- 生成基包后记得保存
app-release-R.txt
文件,否则下次可能无法生成补丁包.
其实官网的相关说明文档还是蛮详细的。只要跟着指南一步一步操作就会可以实现功能了,至于应用到具体的项目中时,肯定还会有各种各样的冲突,坑肯定还是有不少的。