只做个集成记录,不深究具体原理,后面慢慢看,按以下步骤就能完成热更新部署!
第一步:注册bugly后台
在https://bugly.qq.com/v2/申请APP获取相应的appId和key。在https://bugly.qq.com/v2/申请APP获取相应的appId和key。
第二步:引入bugly和tinker依赖
在项目中引入bugly热更新SDK:
implementation 'com.tencent.bugly:crashreport_upgrade:1.3.6'
// 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
implementation 'com.tencent.tinker:tinker-android-lib:1.9.9'
添加分包依赖:
implementation "com.android.support:multidex:1.0.1"
在defaultConfig{}中添加:
multiDexEnabled true
在project的build.gradle添加:
classpath "com.tencent.bugly:tinker-support:latest.release"
第三步:配置tinker插件文件
新建tinker-support.gradle文件,和module的build.gradle同级:
apply plugin: 'com.tencent.bugly.tinker-support'
def bakPath = file("${buildDir}/bakApk/")
/*在本类中需要修改:
* 1.baseApkDir
* 2-4名称的修改
* 2.baseApk
* 3.baseApkProguardMapping
* 4.baseApkResourceMapping
* 5.tinkerId 编号必须一致
* */
/**
* 此处填写每次构建生成的基准包目录 app/build/bakApk/app-0412-18-01-33
*/
def baseApkDir = "app-0321-13-16-10"
//def myTinkerId = "base-" + rootProject.ext.android.versionName // 用于生成基准包(不用修改)
def myTinkerId = "patch-" + rootProject.ext.android.versionName + ".0.0" // 用于生成补丁包(每次生成补丁包都要修改一次,最好是 patch-${versionName}.x.x)
/**
* 对于插件各参数的详细解析请参考
*/
tinkerSupport {
// 开启tinker-support插件,默认值true
enable = true
// 指定归档目录,默认值当前module的子目录tinker
autoBackupApkDir = "${bakPath}"
// 是否启用覆盖tinkerPatch配置功能,默认值false
// 开启后tinkerPatch配置不生效,即无需添加tinkerPatch
overrideTinkerPatchConfiguration = true
// 编译补丁包时,必需指定基线版本的apk,默认值为空
// 如果为空,则表示不是进行补丁包的编译
// @{link tinkerPatch.oldApk }
baseApk = "${bakPath}/${baseApkDir}/app-release.apk"
// 对应tinker插件applyMapping
baseApkProguardMapping = "${bakPath}/${baseApkDir}/app-release-mapping.txt"
// 对应tinker插件applyResourceMapping
baseApkResourceMapping = "${bakPath}/${baseApkDir}/app-rel