android - 以 Shell 用户身份运行 Android 应用程序

标签 android linux shell

在我的应用程序中,我需要启动一个 native 二进制文件来打开和读取一些 /sys/kernel 文件。如果我通过使用 adb shell 连接启动 native 二进制文件(从 /data/local/tmp 手动启动),那么一切正常。

我希望应用程序以编程方式做两件事,

  1. 将二进制文件复制到 /data/local/tmp/。同样,这将无法正常工作,因为普通的 Android 应用程序没有足够的权限。

  2. 以 shell 用户身份启动二进制文件,这样我就可以获得必要的权限。我试过使用 android:sharedUserId="android.uid.shell ,但这似乎不起作用。

请注意,我不需要 root 来打开 /sys 文件。
我只需要成为 shell 用户即可。
任何想法将不胜感激。

谢谢

最佳答案

shell UID 保留用于开发和测试。使用 shell 权限运行应用程序是在规避 Google 的安全模型。因此,如果没有 root,您将无法在安全的商业设备上执行此操作。

可能的临时(重启之间非持久性)解决方法是:

  1. 使用adb shell启动后台服务进程,以shell UID运行

  2. 在您的应用程序中,使用 IPC 请求服务为您执行特殊任务

关于android - 以 Shell 用户身份运行 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242865/

相关文章:

linux - vim 缩进校正无法正常工作

linux - 在 Fedora Linux 上安装 matlab 时出错

linux - 在 Makefile 规则中管道 stdout 和 stderr

shell - 预期进程以 [0] 退出,但收到 ''

java - 访问 JobIntentService 内的类字段值时出现问题

java - 触摸屏时如何保留onTouchEvent?

Node.js 和管理 MongoDB 数据库

android - 仅限 ACCESS_FINE_LOCATION 权限错误模拟器

android - 如何在 android 中以编程方式将数据添加到 Google 日历?

linux - 将引用作为参数传递给函数