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

时间:2013-11-27 12:43:52

标签: android linux shell

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

我希望应用程序以编程方式执行两项操作,

  1. 将二进制文件复制到/data/local/tmp/。再次这不会工作,因为普通的Android应用程序没有足够的权限。

  2. 以shell用户身份启动二进制文件,以便获得必要的权限。我尝试过使用android:sharedUserId="android.uid.shell,但这似乎无效。

  3. 请注意,我不需要root来打开/sys文件。
    我所需要的只是shell用户。任何想法都将不胜感激。

    由于

1 个答案:

答案 0 :(得分:2)

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

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

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

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