2012-11-05 515 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;'