tinker链接: https://github.com/Tencent/tinker/wiki
开源的热更新后台服务框架:https://github.com/baidao/tinker-manager
一、Tinker使用介绍:
官方文档好久没更新了,看起来费事,这里简单总结下怎么使用。
1、导入Sample工程
将官方给出的 Sample工程 在AndroidStudio中打开.首先一点,在app的build.gradle文件中找到tinkerId = getTinkerIdValue()并将其替换成tinkerId = "tinkerId",其中后面的值可以随意设置.再替换ignoreWarning = false为ignoreWarning = true.
2、编译运行原版apk
按照往常 *** 作一样,编译打包debug apk并安装.此时Tinker会在工程的app/build/bakApk/目录下保存打包好的apk文件,找到刚才生成的apk文件,复制其完整文件名,在app的build.gradle文件找到tinkerOldApkPath这一项设置,并将其设置为tinkerOldApkPath = "${bakPath}/<刚才生成的apk文件名>"
3、修改源码 生成新版apk 补丁
在项目里随便改点内容,然后生成debug版的patch(补丁)apk文件。如图:
4、生成补丁包的位置如图:
只需将此补丁包放在MainActivity里边指定的加载补丁包的路径即可。
点击LOAD_PACH 加载执行修复,点击shouInfo 会显示PATCH is loaded,说明成功,然后点击KILL SELF 再次进入 就修复了。
到此为止tinker修复就成功了。然后说说怎么接入 tinker-manager 手机端的,以便跟热更新后台的修复做对接。
步骤参考文档链接:https://github.com/baidao/tinker-manager/tree/master/patchsdk 按照此文档接入就行,我在这里对参数进行一下说明
下边两参数做测试的话为空即可
通过阅读官方的技术文档,始终没有发现有对这个情况的相关配置项,所以只能从别处下手,最后发现,通过在 app module 的 “build.gradle” 文件中,注释掉依赖插件脚本,最终解决掉这个问题:说两句:
目前运行调试一切正常,不过要始终留意后续是否会出现问题;重要的一点是,当要打包新版本时,一定要解开这个注释。
2、can’t the get signConfig for this build
问题:
执行 buildTinkerPatchRelease 打 Release 版本补丁包时报以下错误:
Error:Execution failed for task ':app:tinkerPatchRelease'.
>can't the get signConfig for this build
1
2
解决:
android {
...
// 签名配置【buildTypes中调用了signingConfigs,则signingConfigs{}要置于buildTypes{}前面】
signingConfigs {
release {
try {
storeFile file("MyProject.jks")
storePassword "111111"
keyAlias "zhangzeqiao"
keyPassword "111111"
} catch (ex) {
throw new InvalidUserDataException(ex.toString())
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
debug {
...
signingConfig signingConfigs.release
}
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
其中要特别注意,signingConfigs{} 方法体要置于 buildTypes{} 方法体前面,不然会报以下错误:
演示如何使用腾讯的热修复框架-Tinker
项目地址
[图片上传失败...(image-8d08aa-1609383303209)]
[图片上传失败...(image-66d40c-1609383303209)]
由于原理与系统限制,Tinker有以下已知问题:
官方说明请 点击查看 .
这里我只想说几个比较关键的配置:
【注意】:AppKey和AppVersion都是用于 Tinker Platform 自定发布补丁包所需要的。如果你不使用Tinker Platform来管理你的热更新的话,可以随便设置。
以下是 tinkerpatch.gradle 的配置样例:
更多复杂的配置和高端自定义 *** 作可参见 官方文档 。
以上就完成了Tinker的接入工作。
执行完成后,你会在你模块的 build->bakApk 下看到你打的apk包。
执行完成后,你会在你模块的 build->outputs->apk->tinkerPatch->release 下看到你需要的补丁包 patch_signed_7zip.apk 。
1.如果你使用的Java-8,你还需要在项目目录的 gradle.properties 文件中增加如下配置:
2.执行热更新后,需要重启程序或者锁屏才能生效!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)