源碼查看工具:Source Insight
參考:Android系統(tǒng)啟動流程
Android應用程序啟動過程源代碼分析
Android 7.0 ActivityManagerService(2) 啟動Activity的過程:一
Bootloader引導和Linux Kernel啟動
- Bootloader引導
- 路徑:bootable/bootloader/*
- 加電后,CPU先執(zhí)行bootloader引導程序,正常啟動系統(tǒng),加載boot.img到RAM,然后執(zhí)行,boot.img中包含內(nèi)核。
- 引導程序是在Android操作系統(tǒng)開始運行前的一個小程序。引導程序是運行的第一個程序,因此它是針對特定的主板與芯片的,不是Android操作系統(tǒng)的一部分。引導程序是OEM廠商或者運營商加鎖和限制的地方。
- 引導程序分兩個階段執(zhí)行。第一個階段,檢測外部的RAM及加載對第二階段有用的程序;第二階段,引導程序設置網(wǎng)絡、內(nèi)存等。這些對于運行內(nèi)核是必要的,為了達到特殊的目標,引導程序可以根據(jù)配置參數(shù)或者輸入數(shù)據(jù)設置內(nèi)核。
- Linux Kernel啟動
- 路徑:kernel/*
- 由bootloader加載kernel,kernel經(jīng)自解壓、初始化、載入built-in驅動程序,完成啟動。Kernel啟動后會創(chuàng)建若干內(nèi)核線程(kernel thread),之后裝入并執(zhí)行程序/sbin/init/,載入init process,切換至user- space。
三、Android啟動
Android從Linux系統(tǒng)啟動有4個步驟:
- init進程啟動 ramdisk.so
- Native服務啟動
- System Server,Android服務啟動
- Home啟動