Android初始化流程

來源:互聯網
上載者:User

Android啟動過程:
(1)啟動時首先啟動Linux基礎系統,然後引導載入Linux Kernel並啟動初始化進程。
(2)接著,啟動Linux守護進程(deamons),該進程啟動內容:
    啟動USB守護進程(usbd)來管理USB串連,
    啟動Android Debug Bridge守護進程(adbd)來管理adb串連,
    啟動Debug守護進程(debuggerd)來管理調試進程的請求(包括記憶體轉換),
    啟動無線介面守護進程(rild)來管理無線通訊
(3)啟動Linux守護進程同時,啟動Zygote進程,該進程啟動內容:
    初始化一個Davlik虛擬機器執行個體
    裝載Socket請求所需的類和監聽
    建立虛擬機器執行個體來管理應用程式進程
(4)再接著,初始化runtime進程,該進程啟動需要處理操作:
    初始化服務管理員
    註冊服務管理員,以它作為預設Binder服務的Context管理器
(5)runtime初始化後,發送一個請求道Zygote,開始啟動服務,Zygote將為系統服務建立一個虛擬機器執行個體,並啟動系統服務。
(6)緊接著,系統服務將啟動原生系統服務,主要包括Surface Flinger和Audio Flinger,這些本地服務將註冊到服務管理員。
(7)原生系統服務啟動Android管理服務,Android管理服務將都被註冊到服務管理員上。
(8)系統載入完所有的服務後會處於等待狀態,等待應用程式運行,每一個應用程式都將啟動一個單獨的進程。

Android應用程式調用底層硬體和服務(三種方式):
(1)App -> Runtime Service -> Lib
應用程式首先在應用程式層通過Binder IPC調用應用程式架構的Runtime Service,然後通過JNI與運行庫的原生服務綁定,並動態載入Hal庫,進而調用Linux核心層的Lernel Driver。
(2)App -> Runtime Service -> Native Service -> Lib
與第一種相比,只是Runtime Service通過JNI綁定原生服務,再通過IPC機制調用原生服務進行動態載入的過程。
(3)App -> Runtime Service -> Native Deamon -> Lib
比原生服務調用更簡單,直接通過JNI綁定原生服務,再通過Socket調用守護進程進行動態載入。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.