V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xwhxbg
V2EX  ›  Android

求助为何同样的命令在 adb shell 里面没问题但是用 Java Runtime.getRuntime().exec 会卡住

  •  
  •   xwhxbg · 127 天前 · 3359 次点击
    这是一个创建于 127 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情是这样的,楼主因为沉迷手机魔兽,想用 winlator 来运行 wine-ge 来在安卓手机上跑官服魔兽,但是官服魔兽只支持 wine-ge-8-25 ,因为 battle.net 这个登录器需要 secondary logon 这个功能,于是楼主就试图移植这个 wine-ge 上 winlator 。

    winlator 是一个安卓写的 wine 配置管理工具,它自己手写了一个安卓 UI<=>x11 之间的双向绑定,然后通过 java 的 Runtime.getRuntime().exec 来运行 wine 命令。

    但是同样的命令用 adb shell 运行的时候会正常过,并且输出的 stdout 和 stderr 都很正常也很详细,但是到 java 这边就不行了

    由于这玩意是自己实现的 x11 ,我启动的时候忽略了一个 opcode 117 是用来设置鼠标按键数量的,不知道是不是这个会卡住什么,另外就是 java 的 exec 不知为何无法正常读取到命令的 output ,原始代码在这里 https://github.com/FrontMage/winlator-855/blob/main-make-it-build/app/src/main/java/com/winlator/core/ProcessHelper.java 然后整个项目 clone 下来用 Android studio 打开 main-make-it-build 分支即可,注意可能要更新下 gradle 的版本

    神通广大的 v2 大佬们有没有什么思路呢?





    7 条回复    2024-07-18 18:18:06 +08:00
    cleanery
        1
    cleanery  
       127 天前
    你使用 root 权限的 shell 了没
    我记得模拟硬件至少需要 adb shell 级别的权限
    一般认为 root > system > adb shell > app
    cleanery
        2
    cleanery  
       127 天前
    以前做过一个蓝牙外设模拟屏幕翻页的工具, 就遇到过这个问题, 至少需要在 adb shell 权限下才能模拟触控.
    解决防范大概就是用 root, 当时还没有 shizuku, 你可以考虑下 shizuku api
    xwhxbg
        3
    xwhxbg  
    OP
       126 天前
    @cleanery 没有,我用的正常用户执行即可执行,这里没有模拟触控,仅仅是把 wine 的输出接到了一个安卓写的 x11 里面
    shily
        4
    shily  
       126 天前
    | 但是到 java 这边就不行了
    | 另外就是 java 的 exec 不知为何无法正常读取到命令的 output


    什么不行了,期望是啥,现状是啥?


    我在桌面 Java 1.8 跑了一下你这个 Demo ,运行 ProcessHelper.exec("adb shell ps"); 看起来没啥问题。
    xwhxbg
        5
    xwhxbg  
    OP
       126 天前
    @shily 期望是类似截图 2 里面大量的输出,比如有 BOX64 的信息以及 Dynarec 信息,但是我这边 java 的只能读到 wine 的信息,其实命令是一模一样的
    shily
        6
    shily  
       126 天前
    @xwhxbg 看起来好像是 wine 命令启动了一个 subprocess ,然后这个子进程的输出和 wine 进程的输出是分离的
    xwhxbg
        7
    xwhxbg  
    OP
       126 天前
    @shily 在 java 里面有能力拿到子进程的输出吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:15 · PVG 00:15 · LAX 08:15 · JFK 11:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.