我如何通过Android SDK获得root权限?
我正在学习Android编程,我想创build一个必须以root身份运行的应用程序。 合乎逻辑的是在Android Manifest中添加一个根权限。
我在文档中看到了这个链接 ,并特别指出了FACTORY_TEST
权限 :
public static final String FACTORY_TEST
因为:API级别1
作为制造商testing应用程序运行,以root用户身份运行。 仅当设备在制造商testing模式下运行时才可用。 常量值:“android.permission.FACTORY_TEST”
这是最好的方法吗?
如果无法使用SDK,我怎样才能使“根”应用程序工作?
你需要做的是这样的:
Process root = Runtime.getRuntime().exec("su");
这会导致超级用户显示,它允许您允许或阻止从根访问。 如果用户没有根,这种方法可能不起作用。 这是一种可以testing的方法。
首先让我们获得基本的权利。 Android下面运行Linux内核。 现在,如果你必须以超级用户权限运行你的进程(以root身份运行),唯一的办法就是通过command line
来执行你的进程,因为这是你直接与内核交互的唯一方式。 在运行任何命令之前,您还需要使用su
。 也正如克里斯在第一回答的评论中提到的那样
Process process = Runtime.getRuntime().exec("su");
几乎什么都不会做。 它只会要求使用对话框的超级使用权限。 你可以做的是,而不是只是执行su
你可以用su执行你的进程如下
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});
-c选项
su最常用的选项是-c,它告诉su to execute the command that directly follows it on the same line
。 这样的命令是作为新用户来执行的,然后在命令执行结束后,或者任何已经启动的程序closures后,运行su的terminal窗口或控制台立即返回到前一个用户的账户。 细节 )
备用选项
上述方法的另一种方法可能是使用命令行将应用程序复制到/system/app/
目录。 然后你的应用程序将以root权限自动运行(与系统应用程序相同)( 更多关于Android分区 )
SDK不提供以root身份运行应用程序的方法。