热修复tinker手机端及tinker-manage接入的总结

热修复tinker手机端及tinker-manage接入的总结,第1张

最近研究了一下腾讯的热更新框架,以及一位大神开源的热更新后台服务框架,下边总结一下,希望对想了解的人有所帮助

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.执行热更新后,需要重启程序或者锁屏才能生效!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11331559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存