前言
热更新能力是Bugly为解决开发者紧急修复线上bug,而无需重新发版让用户无感知就能把问题修复的一项能力。目前比较流行的热更新框架有:阿里的AndFix、美团的Robust、QZone的超级补丁方案和微信官方开源的Tinker。其中最容易集成的要数Tinker了,而Bugly热更新是在Tinker的基础上再封装了一层。集成了Tinker-support插件,使得Tinker集成和学习的成本更低了。
官方文档
腾讯Bugly热更新文档
其实基本上跟着文档走就好了。后面我就讲下本人集成时候遇到的一些问题。希望能帮到后面的人
遇到的问题
1、添加插件依赖
这里的“自tinkersupport 1.0.3版本起无需再配tinker插件的classpath”的意思是工程根目录下的build.gradle文件不需要填写tinker的classpath,但是app module的build.gradle文件是需要集成对应版本的tinker的。
2、Tinker版本对应问题
这里如果按照文档所说“tinker-support 1.1.3 对应 tinker 1.9.8”的话,运行应用会抛出一个java.lang.NoClassDefFoundError的错误,网上搜索后发现这里是一个坑。如果对应tinker 1.9.9的话这个异常就会消失
assembleRelease生成的基准包是app-release-unsigned.apk
这是因为打包是没有加入签名导致的,具体可以参考这篇文章Jenkins Android gradle只能打包app-release-unsigned.apk
baseDir基准包生成目录问题
经过测试发现生成基准包时baseApk、baseApkProguardMapping、baseApkResourceMapping这些配置并不生效,生成的基准包的目录名称是随机的,并不是我们设置的路径,这与网上一些文章的截图有些出入。但是生成补丁包时这个路径必须填写正确。
集成Bugly热更新后无法调试
这个在官方文档的常见问题里面有解释: