简介:
Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。
官网:http://www.tinkerpatch.com/
Tinker与其它热修复框架差别对比
Tinker | QZone | AndFix | Robust | |
---|---|---|---|---|
类替换 | yes | yes | no | no |
So替换 | yes | no | no | no |
资源替换 | yes | yes | no | no |
全平台支持 | yes | yes | yes | yes |
即时生效 | no | no | yes | yes |
性能损耗 | 较小 | 较大 | 较小 | 较小 |
补丁包大小 | 较小 | 较大 | 一般 | 一般 |
开发透明 | yes | yes | no | no |
复杂度 | 较低 | 较低 | 复杂 | 复杂 |
gradle支持 | yes | no | no | no |
Rom体积 | 较大 | 较小 | 较小 | 较小 |
成功率 | 较高 | 较高 | 一般 | 最高 |
Tinker集成
TinkerPatch 插件配置
在项目build.gradle文件里配置TinkerPatch插件123dependencies {classpath "com.tinkerpatch.sdk:tinkerpatch-gradle-plugin:1.2.2"}新建thinkerpatch.gradle文件,配置thinker相关,其中bakPath,baseInfo,variantName三个变量指明基准包路径。
|
|
依赖Tinker SDK,在模块build.gradle里配置
123dependencies {compile("com.tinkerpatch.sdk:tinkerpatch-android-sdk:1.2.2")}SDK初始化,在Application里初始化SDK
12345678910111213141516171819public class BaseApplication extends Application {public void onCreate() {super.onCreate();// 我们可以从这里获得Tinker加载过程的信息ApplicationLike tinkerApplicationLike = TinkerPatchApplicationLike.getTinkerPatchApplicationLike();// 初始化TinkerPatch SDK, 更多配置可参照API章节中的,初始化SDKTinkerPatch.init(tinkerApplicationLike).reflectPatchLibrary().setPatchRollbackOnScreenOff(true).setPatchRestartOnSrceenOff(true).setFetchPatchIntervalByHours(3);// 每隔3个小时(通过setFetchPatchIntervalByHours设置)去访问后台时候有更新,通过handler实现轮训的效果TinkerPatch.with().fetchPatchUpdateAndPollWithInterval();}}
Tinker使用
- 官方平台帐号注册
- 配置完gradle后,通过执行thinkerPatchRelease task生成补丁包
- 在官方平台上调试补丁包
- 在官方平台上发布补丁包