Tinker 是腾讯开源的Android热修复框架,通过动态更新和修复应用中的代码、资源和本地库文件,无需用户重新安装 APK,便可以及时修复应用中的 bug,优化用户体验。
下面是Tinker在Android项目中的详细用法,结合Kotlin 代码示例,介绍如何在项目中集成 Tinker实现热修复。主要包括:集成 Tinker、生成补丁、下载补丁并应用补丁。
一、 在项目中集成 Tinker
首先,确保在项目中已经正确引入 Tinker库。
1.1 添加 Tinker依赖
项目级 build.gradle
中添加 Tinker插件依赖:
buildscript {
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.tencent.tinker:tinker-patch-gradle-plugin:1.9.14.14' // Tinker插件
}
}
应用级 build.gradle
中应用 Tinker插件,并添加相关的库依赖:
apply plugin: 'com.android.application'
apply plugin: 'com.tencent.tinker.patch'
android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Tinker{
// 配置修复时需要保留的 dex 文件
defaultConfig {
keepDexList = ['classes.dex']
}
}
}
dependencies {
implementation 'com.tencent.tinker:tinker-android-lib:1.9.14.14' // Tinker库
}
二、生成补丁包
2.1 修改代码并生成补丁包
在应用中修复 bug 后,使用 Tinker生成补丁包,步骤如下:
1.首先构建 Release APK(包含修复的代码):
./gradlew clean assembleRelease
2.生成补丁包:
在应用修改后,执行以下命令来生成补丁包:
./gradlew tinkerPatchRelease
生成的补丁包会放在 build/outputs/patch/
目录下。
2.2 补丁包内容
补丁包包含以下几种文件:
dex:修复的 Java 类文件。
so:修复的 C/C++ 本地库文件。
资源:修复的资源文件,如图片、布局等。
三、下载和应用补丁
3.1 下载补丁包
补丁包生成后,上传到自己的服务器,用户的设备可以通过网络下载补丁包。
可以使用OkHttp、Retrofit等库下载补丁包,以下是OkHttp的下载示例。
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import java.io.File
import java.io.FileOutputStream
import java.io.InputStream
class PatchDownloadManager {
private val client = OkHttpClient()
fun downloadPatch(patchUrl: String, destFil