Tinker: 1.9.13在android 26(含)以上无法合成补丁

Created on 28 May 2019  ·  10Comments  ·  Source: Tencent/tinker

Issue/提问须知

在提交issue之前,我们应该先查询是否已经有相关的issue以及常见问题。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:

```
异常类型:app运行时异常

手机型号:Mix2s

手机系统版本:28

tinker版本:如:1.9.13

gradle版本:如:2.10

是否使用热更新SDK: 如 TinkerPatch SDK 或者 Bugly SDK

系统:Mac

堆栈/日志:
升级到1.9.13后,在26以上机型均无法合成补丁,补丁下载完成之后,没有错误日志输出,对比源码之后,
发现26及以上tinker的patch service是通过JobScheduler来实现的,这个在26以上直观上感觉没有启动,
因为没有任何输出,,官方的demo即可以验证这个问题

但是在手机里的引用权限页面,给予测试demo 自启动权限即可以成功合成补丁,巨诡异

enhancement question

Most helpful comment

老哥,开源是需要大家共同来建设社区,而不是一味的索取,问题的原因已经被发现,你有更好的建议的话,这是一个想开源社区提交代码的好机会,

All 10 comments

确实是这样的,有些手机对JobScheduler卡得比较严,不给自启动权限就无法拉起任何后台进程,连JobScheduler也是完全禁用的。而Android O之后更是在App没有前台任务的时候不让拉非foreground的服务了,这个暂时还没想到解决办法哇。

@tomystang 升级到13版本之后,补丁的合成率在72%左右(1.9.9版本在82%),这个数据看起来并不是特别的满意,我们在补丁下载成功,补丁合成、补丁加载等关键回调都进行打点,但是使用13版本之后,有相当多的机器下载补丁成功之后,没有任何补丁加载的其他日志上报,即没有补丁合成成功,也没有补丁合成失败的事件上报,不晓得其他人遇到过类似的问题吗?

我们也是

同样遇到了这个问题,我当时也纳闷了,我几乎把所有可能出错的步骤都排查了一遍.没想到是这个问题.
给了自启动权限,立马就能成功应用补丁了.

@tomystang 使用intentservice 不需要 自启动权限吧?能不能两头兼容呢? jobservice启动失败就启动 intentservice, service 也不行的话,用线程也可以吧,总比被限制了就不生效要好。这个应该要作为最高优先级来处理啊,不能因为是开源项目,就对质量要求这么低啊。对腾讯这么信任。

老哥,开源是需要大家共同来建设社区,而不是一味的索取,问题的原因已经被发现,你有更好的建议的话,这是一个想开源社区提交代码的好机会,

@mivanzhang 我是打算提 pull request的,但我看 dev 分支已经还原了,我是觉得可以发紧急版本把这个问题修复, 不能说因为是开源项目,就对这种问题不做紧急处理。tinker这种大规模使用的,发版质量还是需要控制好。


https://github.com/Tencent/tinker/commit/419e456f00151a74755d1a586edddcca4d2cca47

小米8 android9.0 小米mix2s android7.1 华为mate20 android9.0均测试失败,可下载patch,不能更新,望尽快处理

感觉小米手机的相关的问题不少,权限、主题、资源。应该提 issue 给小米 😄

我使用了tinker1.9.14在小米8 9.0系统上也遇到了这个诡异的情况(一加、三星7.0、华为5.0能正常修复),得到了下面的日志

JobScheduler: Error executing JobStatus{a088665 #u0a232/506236697 gt.com.zf/com.tencent.tinker.lib.service.TinkerPatchService u=0 s=10232 TIME=none:0 READY}

通过手动给App自启动权限后就能成功加载补丁了

Was this page helpful?
0 / 5 - 0 ratings