招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > 介紹一下Android的開機(jī)流程

介紹一下Android的開機(jī)流程

2012-01-23 10:53:00
來源:
[導(dǎo)讀] 1 系統(tǒng)引導(dǎo)bootloader1) 源碼:bootable bootloader *2) 說明:加電后,CPU將先執(zhí)行bootloader程序,此處有三種選擇a) 開機(jī)按Camera+P

1. 系統(tǒng)引導(dǎo)bootloader

1) 源碼:bootable/bootloader/*

2) 說明:加電后,CPU將先執(zhí)行bootloader程序,此處有三種選擇

a) 開機(jī)按Camera+Power啟動(dòng)到fastboot,即命令或SD卡燒寫模式,不加載內(nèi)核及文件系統(tǒng),此處可以進(jìn)行工廠模式的燒寫

b) 開機(jī)按Home+Power啟動(dòng)到recovery模式,加載recovery.img,recovery.img包含內(nèi)核,基本的文件系統(tǒng),用于工程模式的燒寫

c) 開機(jī)按Power,正常啟動(dòng)系統(tǒng),加載boot.img,boot.img包含內(nèi)核,基本文件系統(tǒng),用于正常啟動(dòng)手機(jī)(以下只分析正常啟動(dòng)的情況)

2. 內(nèi)核kernel

1) 源碼:kernel/*

2) 說明:kernel由bootloader加載

3. 文件系統(tǒng)及應(yīng)用init

1) 源碼:system/core/init/*

2) 配置文件:system/core/rootdir/init.rc,

3) 說明:init是一個(gè)由內(nèi)核啟動(dòng)的用戶級進(jìn)程,它按照init.rc中的設(shè)置執(zhí)行:啟動(dòng)服務(wù)(這里的服務(wù)指linux底層服務(wù),如adbd提供adb支持,vold提供SD卡掛載等),執(zhí)行命令和按其中的配置語句執(zhí)行相應(yīng)功能

4. 重要的后臺程序zygote

1) 源碼:frameworks/base/cmds/app_main.cpp等

2) 說明:zygote是一個(gè)在init.rc中被指定啟動(dòng)的服務(wù),該服務(wù)對應(yīng)的命令是/system/bin/app_process

source (service zygote /system/bin/app_process -Xzygote /system/bin –zygote –start- system-server

socket zygote stream 666)

a) 建立Java Runtime,建立虛擬機(jī)

b) 建立Socket接收ActivityManangerService的請求,用于Fork應(yīng)用程序

c) 啟動(dòng)System Server

5. 系統(tǒng)服務(wù)system server

1) 源碼:frameworks/base/services/java/com/android/server/SystemServer.java

2) 說明:被zygote啟動(dòng),通過System Manager管理android的服務(wù)(這里的服務(wù)指frameworks/base/services下的服務(wù),如衛(wèi)星定位服務(wù),剪切板服務(wù)等)

6. 桌面launcher

1) 源碼:ActivityManagerService.java為入口,packages/apps/launcher*實(shí)現(xiàn)

2) 說明:系統(tǒng)啟動(dòng)成功后SystemServer使用xxx.systemReady()通知各個(gè)服務(wù),系統(tǒng)已經(jīng)就緒,桌面程序Home就是在ActivityManagerService.systemReady()通知的過程中建立的,最終調(diào)用startHomeActivityLocked()啟launcher

7. 解鎖

1) 源碼:

frameworks/policies/base/phone/com/android/internal/policy/impl/*lock*

2) 說明:系統(tǒng)啟動(dòng)成功后SystemServer調(diào)用wm.systemReady()通知WindowManagerService,進(jìn)而調(diào)用PhoneWindowManager,最終通過LockPatternKeyguardView顯示解鎖界面,跟蹤代碼可以看到解鎖界面并不是一個(gè)Activity,這是只是向特定層上繪圖,其代碼了存放在特殊的位置

8. 開機(jī)自啟動(dòng)的第三方應(yīng)用程序

1) 源碼:

frameworks/base/services/java/com/android/server/am/ActivityManagerService.java

2) 說明:系統(tǒng)啟動(dòng)成功后SystemServer調(diào)用ActivityManagerNative.getDefault().systemReady()通知ActivityManager啟動(dòng)成功,ActivityManager會(huì)通過置變量mBooting,通知它的另一線程,該線程會(huì)發(fā)送廣播android.intent.action.BOOT_COMPLETED以告知已注冊的第三方程序在開機(jī)時(shí)自動(dòng)啟動(dòng)。

9. 總結(jié)

綜上所述,系統(tǒng)層次關(guān)于啟動(dòng)最核心的部分是zygote(即app_process)和system server,zygote它負(fù)責(zé)最基本的虛擬機(jī)的建立,以支持各個(gè)應(yīng)用程序的啟動(dòng),而system server用于管理android后臺服務(wù),啟動(dòng)步驟及順序。

10. 參考

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
日本少妇爽的嗷嗷叫视频 | 亚洲日韩在线中文影视 | 欧美日韩在线视频 | 久久国产乱子精品免费久久 | 午夜性色福利小视频 | 在线观看免费无毒不卡 |