gkd icon indicating copy to clipboard operation
gkd copied to clipboard

[BUG] shizuku ITaskStackListener AbstractMethodError

Open iodoboi opened this issue 11 months ago • 17 comments

日志文件

log-1743864108454.zip

BUG描述(文字/截图/视频)

[BUG] 三星S23ultra,one5.1版android13系统老是闪退,清除数据或者重新安装问题依旧存在,软件是最新版本,具体表现如下。图显示,停止运行

Image

期望行为(文字/截图/视频)

主要解决闪退问题

实际行为(文字/截图/视频)

闪退

iodoboi avatar Apr 05 '25 14:04 iodoboi

s22 ui6.1版本一模一样

Jusu2-teach avatar Apr 05 '25 14:04 Jusu2-teach

release.zip

试试这个版本呢?

lisonge avatar Apr 05 '25 14:04 lisonge

发布版本

试试这个版本吗?

好的我试试

iodoboi avatar Apr 05 '25 15:04 iodoboi

发布版本

试试这个版本吗?

谢谢这个版本正常了👍👍👍

iodoboi avatar Apr 05 '25 15:04 iodoboi

https://github.com/gkd-kit/gkd/releases/tag/v1.10.1

lisonge avatar Apr 05 '25 15:04 lisonge

https://github.com/gkd-kit/gkd/releases/tag/v1.10.1

oneui 7.0 android15 ,今天刚刚从1.9.3更新到最新版本,还是会出现这个问题。

log-1743921752091.zip

Future23365 avatar Apr 06 '25 06:04 Future23365

是通过 shizuku 调用 hidden api 的问题,Samsung OneUi 对系统有魔改导致 api 调用失败

lisonge avatar Apr 06 '25 06:04 lisonge

release.zip

使用这个版本呢?

lisonge avatar Apr 06 '25 06:04 lisonge

release.zip

使用这个版本呢?

这个版本可以了!未出现闪退情况。

Future23365 avatar Apr 06 '25 07:04 Future23365

虽然但是但是虽然 但是是不是 像这样做是不是就不用考虑你加了这个他改了那个

https://github.com/RikkaW/HiddenApi/blob/master/compat/src/main/java/rikka/hidden/compat/adapter/TaskStackListenerAdapter.java

不碰快两年了 我不知道(

@lisonge

RikkaW avatar Apr 07 '25 16:04 RikkaW

@RikkaW

感谢评论,关于这个错误,我的个人理解是不同设备的内置的 ITaskStackListener 不一样

传入的 ITaskStackListener 的子类被会在某些时刻被调用 listener.xxx() ,我的这个 class 没有实现这个 xxx 因此会 AbstractMethodError

我的小米设备不会出现这种调用,因此没有发现报错,而他们的三星设备出现了这种调用,因此会报错

那些增加的方法也是从 https://github.com/Nitsuya/AADisplay/blob/6e38192e4e416fd9bebc2ee081409ea330b8aed7/lib-stub/src/main/java/android/app/ITaskStackListener.java#L38 参考

目前是解决方式是先反射获取当前设备的 android.app.ITaskStackListener 的未实现的方法列表

然后和已实现的方法列表比较,如果存在未实现的方法就提示用户反馈日志适配并且禁止部分功能

另外不好意思我没看懂你的 TaskStackListenerAdapter 有什么区别?是在于 onTransact 方法吗?


我对 shizuku 的原理理解并不熟悉,不知道这样是否正确

lisonge avatar Apr 07 '25 17:04 lisonge

根据记忆 ITaskStackListener.Stub 的 onTransact 里面是 switch transaction code 然后去调用那些方法。 那么就可以直接在自己的 onTransact 里 try 一下 super.onTransact,本来的 AbstractMethodError 会被 catch。因为自己不用关心那些增添或修改的方法的结果,所以可以这么做.

RikkaW avatar Apr 07 '25 17:04 RikkaW

懂了,本质上是 ipc 调用,只需要 catch 这个过程即可

lisonge avatar Apr 07 '25 17:04 lisonge

v1.10.1,三星s25ultra,闪退

7161457 avatar Apr 08 '25 13:04 7161457

release.zip

使用这个版本呢?

此版本依然有闪退情况,附log文件 多发生于打开app时,但触发app不定,抖音大概率触发

log-1744364511955.zip

gaobeing233 avatar Apr 11 '25 09:04 gaobeing233

https://github.com/gkd-kit/gkd/releases/tag/v1.10.2-beta.1

lisonge avatar Apr 14 '25 13:04 lisonge

https://github.com/gkd-kit/gkd/releases/tag/v1.10.2-beta.1

我这个就是新的beta1才有的bug,之前没有,并且我这里不会闪退,只是无法授权,和之前反馈的不一样吧

CuSO4with5H2O avatar Apr 14 '25 13:04 CuSO4with5H2O

https://github.com/gkd-kit/gkd/releases

lisonge avatar Apr 27 '25 12:04 lisonge