源碼查看工具:Source Insight
參考:Android系統(tǒng)啟動流程
Android應(yīng)用程序啟動過程源代碼分析
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及加載對第二階段有用的程序纳本;第二階段萌衬,引導程序設(shè)置網(wǎng)絡(luò)、內(nèi)存等秕豫。這些對于運行內(nèi)核是必要的,為了達到特殊的目標混移,引導程序可以根據(jù)配置參數(shù)或者輸入數(shù)據(jù)設(shè)置內(nèi)核。
- Linux Kernel啟動
- 路徑:kernel/*
- 由bootloader加載kernel毁嗦,kernel經(jīng)自解壓、初始化狗准、載入built-in驅(qū)動程序茵肃,完成啟動。Kernel啟動后會創(chuàng)建若干內(nèi)核線程(kernel thread)验残,之后裝入并執(zhí)行程序/sbin/init/,載入init process,切換至user- space胆绊。
三欧募、Android啟動
Android從Linux系統(tǒng)啟動有4個步驟:
- init進程啟動 ramdisk.so
- Native服務(wù)啟動
- System Server压状,Android服務(wù)啟動
- Home啟動