如何获取root访问权限以重新启动模拟器?如何在子进程中杀死所有不需要的进程?
答案 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,您可以开发一个自定义主屏幕,在未经修改的模拟器上测试它,然后将其部署在构建上自定义缺乏安装其他应用程序的任何方法。