【问题标题】:Starting shell from android app to run separate executable从 android 应用程序启动 shell 以运行单独的可执行文件
【发布时间】:2011-09-01 00:26:12
【问题描述】:

我想从 android 应用程序启动 shell,因为我想运行一个可执行文件并传递一些参数并期望输出。

我尝试了 ProcessBuilder 并在运行时处理并运行以监听他们的 io 流,但 android 应用程序不允许我启动 shell,这是权限问题吗??

我一直在努力

runCommand 错误:运行 exec() 时出错。命令:[su] 工作目录:null 环境:null

有没有办法在运行应用程序作为进程和进程将从 shell 启动之间作为接口运行 shell?

感谢大家对这个问题的了解

【问题讨论】:

    标签: android process runtime executable


    【解决方案1】:

    实际上,当您使用“su”破解时,您得到的是一个以 root 身份运行的 shell(如果设备已被修改以支持它)

    如果您不想要一个 root shell,而是一个作为应用程序用户 ID 运行的普通 shell,您可能可以运行 /system/bin/sh 或设备上的任何内容,而不是 su。

    【讨论】:

    • @himanshu 另外,您无法执行存储在 sdcard 上的程序
    • 如果我把它放在项目的子目录下,它每次都找不到,你知道哪里出了问题吗?
    • 在应用程序的子目录下几乎是唯一可以放置它的地方。您必须使用 api 调用来识别该目录在特定安装中的位置。
    • 命令:[/data/data/mypackage/executable/ffmpeg] 工作目录:null 环境:[-vcodec copy, -i /mnt/sdcard/download/sample.m4v, -ss 00: 00:00, -t 00:02:00, /mnt/sdcard/download/output/partone.m4v] 这就是每次我得到像 getApplicationContext().getPackageManager().getPackageInfo("mypackage", PackageManager.GET_ACTIVITIES).applicationInfo.dataDir 或 srcDir
    • 在你的包的私有目录中,设置了执行位是目前唯一可行的位置,但即使这样也不受官方支持,因为 android 不正式支持 3rd-party 可执行文件,期间。外部存储、资产等肯定不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2014-01-15
    • 1970-01-01
    • 2011-02-06
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多