0

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

4

4 回答 4

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

于 2011-05-31T15:33:58.777 回答
0

大多数用于 Android 的 su 二进制文件都依赖于 SuperUser.apk(可通过市场免费获得)。su 二进制文件使用此 apk 询问用户是否可以执行请求的任何操作(并且用户可以选择记住答案)。如果您使用的是这样的 su,您还需要拥有该 apk。

一旦这些部件就位,您的应用程序就可以使用正确的参数生成一个进程……例如 argv[0]="/path/to/su", argv[1]="-c", argv[2] ="(无论你想运行什么命令)", argv[3...n]=你的命令的参数。

于 2011-05-26T13:43:25.487 回答
0

您已经拥有对模拟器的 root 访问权限。要杀死一个进程和所有子进程,只需在 Eclipse 中使用设备视图,在此处选择模拟器并选择要杀死的进程。

如果您正在寻找它,我不知道如何从代码重新启动。重新启动设备应该很容易:只需关闭它,然后再次启动它。

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

于 2011-05-26T13:33:41.573 回答
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,您将改为开发一个自定义主屏幕,在未修改的模拟器上测试它,然后将其部署到定制的构建中缺少安装其他应用程序的任何方式。

于 2011-05-31T16:42:50.000 回答