在提交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 自启动权限即可以成功合成补丁,巨诡异
确实是这样的,有些手机对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自启动权限后就能成功加载补丁了
Most helpful comment
老哥,开源是需要大家共同来建设社区,而不是一味的索取,问题的原因已经被发现,你有更好的建议的话,这是一个想开源社区提交代码的好机会,