Shizuku-API icon indicating copy to clipboard operation
Shizuku-API copied to clipboard

一些第三方工具(测试了Tasker和MacroDroid)无法调用Shizuku的rish

Open dev-techmoe opened this issue 3 years ago • 8 comments
trafficstars

没打完字就提交了,按错了,在编辑 已编辑完成

测试的Shizuku版本为v12.6.2

测试过程中使用了TaskerMacroDroid,均已经修改了RISH_APPLICATION_ID(MacroDroid需要使用MD-Helper,因为高版本Android受到Google Play政策限制MD无法申请到存储空间权限)。

将rish与dex文件释放在/storage/emulated/0/shizuku文件夹,根据文档提示,在两者的shell脚本任务中尝试执行命令。

sh /storage/emulated/0/shizuku/rish -c "ls"

但没有任何的输出,具体表现为命令卡在了这里,没有任何的输出,设定的超时时间之后执行中断。

我不太确定是否是我对这个工具的一些使用理解上出了一些问题,能否提示一些调试这个功能有关的细节以便我分析问题?谢谢

dev-techmoe avatar May 03 '22 09:05 dev-techmoe

updated

dev-techmoe avatar May 03 '22 09:05 dev-techmoe

Android 10 以上禁止后台启动 Activity。在使用 Shizuku 而不是 Sui 时,rish 取得服务 binder 的方案是启动 Shizuku 的 Activity 时带一个 binder,Shizuku 再通过那个 binder 将服务的 binder 返回过去

当初采取这个方案而不是发广播的方案的原因是考虑到各种定制系统会限制发送及接收广播。但是现在一想,使用广播的方式只要在超时后提示需要解除定制系统的各种限制就好。

发出 哎呀,下个版本调整 的声音(

RikkaW avatar May 03 '22 10:05 RikkaW

https://github.com/RikkaApps/Shizuku/actions/runs/2265023959 尝试这个构建,记得重新导出 rish。

RikkaW avatar May 03 '22 16:05 RikkaW

https://github.com/RikkaApps/Shizuku/actions/runs/2265023959 尝试这个构建,记得重新导出 rish。

感谢回复,我抽时间测试了一下这个版本

  1. 目前两个App(Tasker和MarcoDroid)在第一次调用时可以正常的弹出授权框了。
  2. Tasker端使用目前没有发现什么问题,命令可以正常执行。
  3. MacroDroid用自带的MD-Helper在实际执行命令的时候依然会卡住,也捕获不到任何输出。但是使用了Termux与Termux:Tasker这个来执行rish,是可以正常执行命令的。
  4. 新发现的一个问题是,目前rish的输出行为很诡异,明明所有命令都正常执行了,还是会有一部分输出进入到stderr中,比如有下面的脚本
    #!/system/bin/sh
    
    echo "script start"
    echo "current user: $(whoami)"
    echo "date: $(date)"
    
    执行命令
    sh /storage/emulated/0/shizuku/rish test.sh
    
    会出现一会儿current user行和start行在stdout,一会儿却输出到了stderr这种情况。当然这里合理的输出当然是所有内容都应该出现在stdout,所以我觉得这应该是一个bug,大胆猜测一下或许第三条中MacroDroid的行为异常也是这个问题所导致的。

dev-techmoe avatar May 04 '22 11:05 dev-techmoe

Delete all

Ofa234 avatar Jan 23 '24 12:01 Ofa234

https://github.com/RikkaApps/Shizuku/actions/runs/2265023959尝试这个构建,记得重新恢复rish。

感谢回复,我抽出了时间测试一下这个版本

  1. 目前App(Tasker和两个MarcoDroid)在第一次调用时可以正常的弹出授权框。

  2. Tasker端使用目前没有发现什么问题,命令可以正常执行。

  3. MacroDroid用自带的MD-Helper在实际执行命令的时候依然会卡住,也捕获不到任何输出。但是使用了Termux与Termux:Tasker这个来执行rish,是可以正常执行命令的。

  4. 新发现的一个问题是,目前rish的输出行为很诡异,显然所有命令都正常执行了,还是会有一部分输出进入到stderr中,比如下面有的脚本

    #!/system/bin/sh
    
    echo "script start"
    echo "current user: $(whoami)"
    echo "date: $(date)"
    

    执行命令

    sh /storage/emulated/0/shizuku/rish test.sh
    

    会出现一会儿当前用户行并开始在stdout,一会儿输出却到了stderr这种情况。当然这里合理的输出当然是所有内容都应该出现在stdout,所以我觉得这应该是一个bug,猜测猜测一下可能是第三条中MacroDroid的行为异常也是这个问题所导致的。

大佬你解决了吗,我用这个开源demo,在安卓14设备上测试,将rish和dex移动到/data/data/包名目录,使用sh rish 执行log会提示没有权限然后就卡住不动,但是使用termux执行同样过程却没有问题:(

axb996 avatar Mar 01 '24 16:03 axb996

Android 13上的Shizuku 13.5.4.r1049.0e53409也有一样的问题。在Anywhere-里调用rish时会卡住,不能成功执行命令。

notastudio avatar May 12 '24 12:05 notastudio