[BUG] shizuku ITaskStackListener AbstractMethodError
日志文件
BUG描述(文字/截图/视频)
[BUG] 三星S23ultra,one5.1版android13系统老是闪退,清除数据或者重新安装问题依旧存在,软件是最新版本,具体表现如下。图显示,停止运行
期望行为(文字/截图/视频)
主要解决闪退问题
实际行为(文字/截图/视频)
闪退
s22 ui6.1版本一模一样
https://github.com/gkd-kit/gkd/releases/tag/v1.10.1
https://github.com/gkd-kit/gkd/releases/tag/v1.10.1
oneui 7.0 android15 ,今天刚刚从1.9.3更新到最新版本,还是会出现这个问题。
是通过 shizuku 调用 hidden api 的问题,Samsung OneUi 对系统有魔改导致 api 调用失败
虽然但是但是虽然 但是是不是 像这样做是不是就不用考虑你加了这个他改了那个
https://github.com/RikkaW/HiddenApi/blob/master/compat/src/main/java/rikka/hidden/compat/adapter/TaskStackListenerAdapter.java
不碰快两年了 我不知道(
@lisonge
@RikkaW
感谢评论,关于这个错误,我的个人理解是不同设备的内置的 ITaskStackListener 不一样
传入的 ITaskStackListener 的子类被会在某些时刻被调用 listener.xxx() ,我的这个 class 没有实现这个 xxx 因此会 AbstractMethodError
我的小米设备不会出现这种调用,因此没有发现报错,而他们的三星设备出现了这种调用,因此会报错
目前是解决方式是先反射获取当前设备的 android.app.ITaskStackListener 的未实现的方法列表
然后和已实现的方法列表比较,如果存在未实现的方法就提示用户反馈日志适配并且禁止部分功能
另外不好意思我没看懂你的 TaskStackListenerAdapter 有什么区别?是在于 onTransact 方法吗?
我对 shizuku 的原理理解并不熟悉,不知道这样是否正确
根据记忆 ITaskStackListener.Stub 的 onTransact 里面是 switch transaction code 然后去调用那些方法。 那么就可以直接在自己的 onTransact 里 try 一下 super.onTransact,本来的 AbstractMethodError 会被 catch。因为自己不用关心那些增添或修改的方法的结果,所以可以这么做.
懂了,本质上是 ipc 调用,只需要 catch 这个过程即可
v1.10.1,三星s25ultra,闪退
https://github.com/gkd-kit/gkd/releases/tag/v1.10.2-beta.1
https://github.com/gkd-kit/gkd/releases/tag/v1.10.2-beta.1
我这个就是新的beta1才有的bug,之前没有,并且我这里不会闪退,只是无法授权,和之前反馈的不一样吧
https://github.com/gkd-kit/gkd/releases