在我的应用程序中,我需要启动一个 native 二进制文件来打开和读取一些 /sys/kernel 文件
。如果我通过使用 adb shell 连接启动 native 二进制文件(从 /data/local/tmp
手动启动),那么一切正常。
我希望应用程序以编程方式做两件事,
将二进制文件复制到
/data/local/tmp/
。同样,这将无法正常工作,因为普通的 Android 应用程序没有足够的权限。以 shell 用户身份启动二进制文件,这样我就可以获得必要的权限。我试过使用
android:sharedUserId="android.uid.shell
,但这似乎不起作用。
请注意,我不需要 root 来打开 /sys
文件。
我只需要成为 shell 用户即可。
任何想法将不胜感激。
谢谢
最佳答案
shell
UID 保留用于开发和测试。使用 shell
权限运行应用程序是在规避 Google 的安全模型。因此,如果没有 root,您将无法在安全的商业设备上执行此操作。
可能的临时(重启之间非持久性)解决方法是:
使用
adb shell
启动后台服务进程,以shell UID运行在您的应用程序中,使用 IPC 请求服务为您执行特殊任务
关于android - 以 Shell 用户身份运行 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242865/