android常用框架—热修复| 青训营笔记

92 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第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…