我正在开发一个新的硬件平台,我需要在其上安装Android操作系统。
对于初始测试,我需要停止Android init.rc文件中的所有Android服务。
我在我的代码库中搜索了init.rc文件
./bootable/diskinstaller/init.rc
./bootable/recovery/etc/init.rc
./system/core/rootdir/init.rc
,我需要知道如何在init.rc中识别android服务?我正在考虑禁用android dalvik VM。停止所有Android相关的服务是不是很好地停止dalvic VM或只是逐个禁用所有服务?谢谢!
答案 0 :(得分:4)
假设您已成功启动,则可以使用以下命令关闭android框架:
setprop vold.decrypt trigger_shutdown_framework
此命令是作为Honeycomb中加密系统的一部分实现的。它将关闭除核心本机服务之外的所有服务:
您可以使用以下命令重启android框架:
setprop vold.decrypt trigger_restart_framework
显然你必须是root用户才能做到这一点。
答案 1 :(得分:1)
我搜索了很多,并找到了一个特定的解决方案来禁用可能有效的Android服务,Android源代码中有一个init.rc文件
./system/core/rootdir/init.rc
此init.rc文件描述了需要设置的系统服务,文件系统和其他参数。
由于 init进程是在加载内核后执行的第一个进程,init进程会查找此 init.rc 脚本文件,然后对其进行解析并启动系统服务进程。
有一种名为 Zygote(dalvic VM)的服务,用于初始化 SystemServer.java ,这是系统中运行的第一个java组件,其中包含所有Android服务的声明。
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
class main
socket zygote stream 660 root system
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart media
onrestart restart netd
安卓服务在 SystemServer.java 的 run()方法中声明。文件的路径是/frameworks/base/services/java/com/android/server/SystemServer.java
>
如果我们注释掉zygote,android服务可能没有初始化。我没有测试它,因为内核启动时有些恐慌,但希望它会成为解决方案。:)