Tinker
地址:github.com/Tencent/tin… [最新版本:v1.9.15.1] Dec 9, 2024
1. TinkerPatch 平台
TinkerPatch 是由原微信团队成员创建的第三方平台,旨在简化 Tinker 的集成和补丁管理。该平台提供了一键接入、补丁管理、编译优化等功能,帮助开发者快速实现热修复。然而,TinkerPatch 平台目前已停止维护,不再推荐使用。
2.Bugly 热更新服务
腾讯的 Bugly 平台集成了 Tinker,为开发者提供了热更新解决方案。通过集成 Bugly 的 SDK,开发者可以实现自动下载、合成并应用补丁的功能。Bugly 还提供了热更新管理后台,方便开发者对每个版本的补丁进行管理。值得注意的是,Bugly 的热更新服务目前仍在维护,开发者可以考虑使用。
3.自行搭建补丁管理服务器
根据自身需求,开发定制化的补丁管理系统,完全掌控补丁的生成、下发和应用过程。
4. Tinker-sample-android
-
拉取Tinker代码:
[最新版本:v1.9.15.1] Dec 9, 2024
https://github.com/Tencent/tinker -
选择目录
D:\myworkroom\tinker-master\tinker-master\tinker-sample-android -
配置JDK环境:
jdk:corretton-11 (jdk11) -
修改TINKER_ID
def getTinkerIdValue() { return hasProperty("TINKER_ID") ? TINKER_ID : gitSha() } -
变更为新的TINKER_ID
def getTinkerIdValue() { return hasProperty("TINKER_ID") ? 101 : 101 } -
构建基础包,命令行打包
./gradlew assembleDebug --info -
此时生成基础包
app/build/bakApk/app-debug-0317-17-33-46.apk app/build/bakApk/app-debug-0317-17-33-46-R.txt -
修改代码,构建差异包,打开MainActivity里面的这一行代码
// Log.e(TAG, "i am on patch onCreate"); -
修改app/build.gradle,为bak里面生成的文件的路径,获取6步骤的路径
ext { tinkerOldApkPath = "${bakPath}/app-debug-0317-17-33-46.apk" tinkerApplyMappingPath = "${bakPath}/app-debug-0317-17-33-46-mapping.txt" tinkerApplyResourcePath = "${bakPath}/app-debug-0317-17-33-46-R.txt" tinkerBuildFlavorDirectory = "${bakPath}/app-0317-17-33-46" } -
由于 jcenter.bintray.com/com/tencent… 404,所以屏蔽sevenZip,因为这个包无法下载。
sevenZip {
/**
* optional,default '7za'
* the 7zip artifact path, it will use the right 7za with your platform
*/
zipArtifact = "com.tencent.mm:SevenZip:1.1.10"
/**
* optional,default '7za'
* you can specify the 7za path yourself, it will overwrite the zipArtifact value
*/
// path = "/usr/local/bin/7za"
}
11. 构建差异包,点击 tinkerPatchDebug运行
选择Gradle->tinker-sample-android->app->Tasks->tinker->tinkerPatchDebug
12. 生成差异包
app/build/outputs/apk/tinkerPatch/debug/app-debug-patch_signed.apk
13. 然后我们将app-debug-patch_signed.apk推送到手机的sdcard中。
adb push ./app/build/outputs/apk/tinkerPatch/debug/app-debug-patch_signed.apk /storage/sdcard0/
14. 点击LOAD PATCH按钮, 如果看到patch success, please restart process的toast,即可锁屏或者点击KILL SELF按钮
- 我们可以看到的确出现了
I am on patch onCreate日志,同时点击SHOW INFO按钮,显示补丁包的确已经加载成功了!