標籤:核心 android
這裡所說的Android系統的啟動時間,並不是簡單地用秒錶和肉眼來統計,而是通過分析系統輸出的log資訊來統計,這樣才顯得更加專業、準確。
首先瞭解2個概念:
(1) Android是基於Linux核心的系統,因此Android的啟動過程是分為兩個階段的,第一個階段就是Linux核心的啟動,第二個階段就是Android架構的啟動(包括核心服務和程式)。
(2)Android的log系統是獨立於Linux核心的log系統的。Linux核心通過printk列印的log資訊,這些log寫入到了/dev/kmsg檔案中,在Shell終端可以通過dmesg命令查看這些log資訊。Android架構則是通過Logger驅動列印log資訊,這些log並沒有歸併到kmesg檔案中,而是單獨儲存的,位於/dev/log目錄下,在Shell終端可以通過logcat命令來查看。
下面我們分別從兩種log資訊中找到如何統計系統啟動時間的方法。
1. 通過dmesg資訊統計系統啟動時間
首先,我們通過dmesg命令抓取Linux核心的log資訊(部分系統可能需要先執行 adb root):
$ adb shell dmesg > dmesg.txt
Linux核心啟動完成,一般都有如下的標準輸出資訊:
[ 3.838682]Freeing initrd memory: 1844K (ffffffc003600000 - ffffffc0037cd000)
因此,只要我們在dmesg.txt檔案中找到“Freeing initrd memory”這一行即可,從上面的log可以看出,Linux核心啟動只用了 3.838682s。
那麼,如何找到Android系統啟動完成的標誌呢?
很多Android裝置在系統啟動完成後,會在核心log中列印如下資訊:
<6>[ 29.913726] init: processing action 0x96bb8 (property:sys.boot_completed=1)
因此,找到“boot_completed”這一行也就得到了整個系統的啟動時間了,從這一行可以看出,整個系統啟動用了29.913726s。
當然,並不是所有的Android裝置都會列印出這條log,因此,我們一般用下面介紹的方法來專門統計Android系統的啟動時間,
2. 通過logcat統計系統的啟動時間
文章開頭我們已經介紹過,Android的log系統是獨立於Linux核心log系統的,通過在終端輸入adb shell 進入Android系統,cd到/dev/log目錄,你會發現裡面有四個檔案,分別是:events,main,radio,system.
Android系統把Log分為了四類,不同的類別記錄不同的Log資訊:
main - 主要的Log資訊,大部分應用層級的Log資訊都在這裡
events - 系統事件相關的Log資訊
radio - 無線/電話相關的Log資訊
system - 低層級的系統調試Log資訊
預設通過logcat抓取的是main資訊,如果想抓取指定類別的log資訊的方法,在logcat命令後加-b參數,例如:
adb logcat -d -v time -b "main" > main.txt adb logcat -d -v time -b "events" > events.txt adb logcat -d -v time -b "system" > system.txt adb logcat -d -v time -b "radio" > radio.txt
那麼,如何統計Android系統的啟動時間呢?
我們可以重點關注events類別的log資訊,通過如下命令:
$ adb logcat -d -b events | grep "boot"
,這是我在高通的msm8953開發板上抓取的log資訊:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6E/55/wKioL1V5fk2zyWfUAAHv186gKeI487.jpg" title="1.png" alt="wKioL1V5fk2zyWfUAAHv186gKeI487.jpg" />
“boot_progress_start”代表著Android螢幕點亮,開始顯示啟動動畫,即15.492s開始閃爍Android字樣。
“boot_progress_enable_screen”代表著整個系統啟動結束,即用了29.986s,用這個總時間減去Linux Kernel的啟動時間即可得到Android OS部分的時間。
本文出自 “帆布鞋也能走貓步” 部落格,請務必保留此出處http://9409270.blog.51cto.com/9399270/1971774
Android系統的啟動時間