2012-11-05 488 views
23

问题

adb shell startadb shell stop究竟干什么?'adb shell start/stop'是做什么的?

说明

我认为他们称之为/system/bin/start/system/bin/stop。但是这两个可执行文件并没有给出他们所做的任何线索。当在真实设备上测试时,我发现合子进程已启动并停止。因此,这两个命令似乎控制Android运行时(对应于下图中的黄色和蓝色部分)。

Android Architecture

启动什么确切的进程/服务 /停止这两个命令?

+0

来源:https://android.googlesource.com/platform/system/core/+/brillo-m8-release/toolbox/start_stop.cpp –

回答

1

运行该设备上

grep ^service /init*rc 
+0

直到最近,大多数官方Android版本不包括' grep' –

+1

使用'adb pull'将所有这些文件复制到您的工作站上,然后从那里运行grep。 –

+0

@ChrisStratton:编译/下载busybox并运行busybox grep。 – pevik

9

基本上,你的所有的Android服务将重新启动;那些创建并注册在SystemServer.java。这在“合子上下文”中被称为。所以是的,Zygote停止了。

所有在ServiceManager在Android中注册的服务都将在ServiceManager中被删除。要重新启动它们,请执行adb shell start

另请注意,SystemServer由Zygote启动,因此init.rc表明如果Zygote已停止,那么即使SystemServer也必须停止。即使SurfaceFlinger死亡,因为它从SystemServer开始,但本地。

1

我一直在想在Android上做什么“停止”。从某人那里学习到“停止”会停止AP由SurfaceFlinger渲染。

尝试下面的命令。执行该命令,等待几秒钟,然后在Android上执行“停止”。该命令不断打印增加的数字并创建.txt文件。所以也许它只会停止Android部分而Linux部分仍然活跃。只是FYI。

busybox sh -c 'i=0;while [ $i -ne 100 ]; do echo $i >> count.txt; sleep 1; i=$(($i + 1)); echo $i; touch "$i.txt"; done;'