Tinker:Android 热修复框架接入与补丁打包指南
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | Tencent/tinker |
| 中文文档 | Tinker Wiki |
| 开源协议 | BSD-3-Clause |
| 主要语言 | Java |
| Star 数 | 约 9.5k |
| 最新版本 | v1.9.15.1 |
Tinker 是腾讯开源的 Android 热修复(hot-fix)解决方案库,支持在不重新安装 APK 的情况下更新 dex、.so 库与资源。它已通过微信审核,广泛用于线上 Bug 紧急修复。Tinker 提供 gradle 插件、命令行工具与示例工程,支持差分补丁、多渠道与灰度发布。

二、官方图片
上图为 Tinker 仓库在 GitHub 上的社交预览图。
三、环境要求
- Android Studio + Gradle;
- JDK 8;
- minSdk 与 support library 按 Tinker 要求;
- 补丁打包需要配置 tinker-gradle-plugin。
四、接入步骤
1. 根 build.gradle 加入插件
buildscript {
dependencies {
classpath ('com.tencent.tinker:tinker-patch-gradle-plugin:1.9.1')
}
}
2. app/build.gradle 应用插件与依赖
dependencies {
provided('com.tencent.tinker:tinker-android-anno:1.9.1')
compile('com.tencent.tinker:tinker-android-lib:1.9.1')
}
apply plugin: 'com.tencent.tinker.patch'
3. 改造 Application
用注解生成 Application 是推荐做法:
@DefaultLifeCycle(
application = "tinker.sample.android.app.SampleApplication",
flags = ShareConstants.TINKER_ENABLE_ALL)
public class SampleApplicationLike extends DefaultApplicationLike {
// 原 Application 的 onCreate 等逻辑放这里
}
或手写 TinkerApplication 子类:
public class SampleApplication extends TinkerApplication {
public SampleApplication() {
super(
ShareConstants.TINKER_ENABLE_ALL,
"tinker.sample.android.app.SampleApplicationLike");
}
}
4. 加载补丁
TinkerInstaller.install(this, patchPath);
5. 生成差分补丁
用 tinker-gradle-plugin 基于基准包与新包生成差分包;Ark 编译器可用 bash build_patch_dexdiff.sh old=xxx new=xxx。
五、使用方法
- 修复 dex:修复 Java 代码 Bug;
- 修复 so 库:更新 native 库;
- 修复资源:更新 layout、图片等;
- 补丁差分:基于新旧 APK 生成差分包,体积小;
- 灰度发布:可按比例下发补丁;
- ProGuard:自动生成 multiDex keep 混淆配置。
六、常见问题 FAQ
-
Tinker 能修复什么? dex、so 库、资源三类更新,无需重装 APK。
-
为什么要改造 Application? Tinker 需要在加载补丁后再初始化 Application 逻辑,故用 ApplicationLike 代理。
-
补丁包怎么生成? 用 tinker-gradle-plugin 基于基准包与新包生成差分包。
-
支持哪些资源修复? 支持 res、assets 等资源更新。
-
微信能用吗? 已通过微信审核,是官方推荐方案之一。
-
混淆怎么处理? Tinker 自动生成 multiDex keep 的 proguard 文件。
七、跳转链接
- GitHub 仓库:Tencent/tinker
- 中文文档:Tinker Wiki
- 示例:SampleApplicationLike
- 发布版本:Releases