这是我参与「第四届青训营 」笔记创作活动的第5天
1.什么是热修复
定义:在我们应用上线后出现bug需要及时修复时,不用再发 新的安装包,只需要发布补丁包,在客户无感知下修复掉bug。
2.Tinker的使用
2.1.Tinker是什么
Tinker是微信开源的一个热修复解决方案,支持dex、库和资源更新,无需重新安装apk。 开源地址:github.com/Tencent/tin…
2.2.使用Tinker
可以直接使用Tinker,也可以使用腾讯Bugly服务集成Tinker热修复,==后者提供了补丁管理服务。 建议大家根据官方案例工程进行使用,按照Bugly文档由于版本问题会导致无法使用 github.com/BuglyDevTea…
2.3接入Bugly第一步
检查版本: 根目录下
“build.gradle” classpath 'com.android.tools.build:gradle:3.2.0' gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
工程根目录下“build.gradle”文件中添加:
buildscript {
repositories {
jcenter()
}
dependencies {
// tinkersupport插件, 其中lastest.release指拉取最新版本,也可以指定明确版本号,例如1.0.4
classpath "com.tencent.bugly:tinker-support:1.2.0"
}
}
2.4接入Bugly第二步:
在app module的“build.gradle”文件中添加(示例配置):
apply from: 'tinker-support.gradle' dependencies {
implementation 'com.tencent.tinker:tinker-android-lib:1.9.14.10' implementation 'com.tencent.bugly:crashreport_upgrade:1.5.0' }
2.5接入Bugly第三步:
在项目源码中加入:SampleApplication与SampleApplicationLike类!并且将SampleApplication注册进入 AndroidManifest.xml 注意:第二个参数需要改为自己工程中的SampleApplicationLike的包名 SampleApplicationLike#onCreate中:
注意:第二个参数传递自己的appID Bugly.init(getApplication(), "e0b1ba785f", true);
tinker-android-anno 是注解处理器 , 自定义 Application 时 , 不需要继承 Application , 可以通过注解生成 Application ; 对应构建脚本的 com.tencent.tinker:tinker-android-anno:1.9.1 依赖 ;
参考 AnnotationProcessor.java 注解处理器 ;
参考 DefaultLifeCycle.java 注解 ;
tinker-android-lib 是核心库 , 一些工具类放在该库中 ; 对应构建脚本的 com.tencent.tinker:tinker-android-lib:1.9.1 依赖 ;
tinker-android-loader 热修复中 dex 数组相关操作在该库中 ;
参考资料 :
官方主页 : github.com/Tencent/tin…
Tinker 官方 Wiki 地址 : github.com/Tencent/tin…
Tinker 接入指南 : github.com/Tencent/tin…
Tinker 官方示例 : github.com/Tencent/tin…