在Android模拟器中通过代码重新启动root访问的步骤是什么?

时间:2011-05-26 13:29:09

标签: android root reboot

如何获取root访问权限以重新启动模拟器?如何在子进程中杀死所有不需要的进程?

4 个答案:

答案 0 :(得分:0)

您已拥有对模拟器的root访问权限。要杀死进程,所有子进程只需在eclipse中使用设备视图,选择模拟器,然后选择要杀死的进程。

如果您正在寻找,我不知道如何从代码重新启动。重新启动设备应该很简单:只需将其关闭然后重新启动即可。

(我觉得我并没有真正得到你想要的东西......)

答案 1 :(得分:0)

Android的大多数su二进制文件依赖于SuperUser.apk(可通过市场免费获得)。 su二进制文件使用这个apk来询问用户是否可以做任何请求(并且用户可以选择记住答案)。如果你正在使用这样的su,你还需要拥有那个apk。

一旦这些部分到位,你的应用程序就可以产生一个具有正确参数的进程...类似于argv [0] =“/ path / to / su”,argv [1] =“ - c”,argv [2] =“(无论你想要运行什么命令)”,argv [3 ... n] =你命令的参数。

答案 2 :(得分:0)

要在命令行中终止进程,只需在shell上发出以下命令行:

kill-9 YOUR_PID

如果您知道进程的名称,而不是pid,请使用

kill -9 $(pidof NAME_OF_PROCESS)

您也可以在代码中使用它:

Runtime.getRuntime().exec("kill-9 YOUR_PID");

查看手册页以获取更多详细信息:http://unixhelp.ed.ac.uk/CGI/man-cgi?kill

答案 3 :(得分:0)

  

ps-重新启动后我还想杀死所有不需要的进程,除了我的特定应用程序及其子进程单独在模拟器中运行。

如果你真的想做什么 - 将android版本重新用作通用的嵌入式linux,那么解决它的方法是重新生成一个包含init.rc的ramdisk镜像(android包到内核中)启动你的应用程序而不是android本机服务和(java-esque dalvik)android运行时。重建ramdisk需要一个类似unix的操作系统和你可以在网络搜索中找到的神秘的cpio命令行。我很想离开ADB的创业公司,这样你就可以调试各种错误的东西。

出于测试目的,只需从adb shell输入“stop”就会关闭android运行时并为你提供一个无UI的虚拟口袋linux盒子。仍然会有一些本机服务在运行,但它们可能比帮助更有帮助。最终,您可能需要在添加的内容上设置OOM杀手值,但如果不消耗大量内存,如果没有运行时间,则可能在短期内不会成为问题。

或者如果您想要做的是在Android运行时之上构建一个非常锁定且有限的UI,您可以开发一个自定义主屏幕,在未经修改的模拟器上测试它,然后将其部署在构建上自定义缺乏安装其他应用程序的任何方法。