Android源碼的階層分析

來源:互聯網
上載者:User

bionic,整個系統的基礎類庫,Android系統就是基於這個類庫開發的,

system,Android系統類別庫,基於bionic類庫開發,包含工具類庫(libcutils),LOG類庫(liblog),壓縮類庫(libzipfile)類。

主要功能有:

一、完成Android初始化(init)。

解析init.rc並開啟系統初始化時需要載入的程式(parser.c),初始化裝置(devices.c),開啟屬性服務(property_service.c)等。

二、開啟Android系統的一些基礎服務。

1、系統的裝置服務(vold)。比如完成SD卡掛載、卸載管理,從核心處接收事件建立裝置結點等。

三、SHELL程式及相應的toolbox。

四、ADB程式。

五、logcat系統。

可以說,bionic和system兩個檔案裡的東西完成了Android對Linux的封裝,在這兩個檔案夾的基礎上構建起了Android系統的兩大核心模組:Dalvik和Framework。Dalvik是一個基礎純C的VM,這個網上有比較詳細的說明。重點一層層地分析一下Framework。

最底層就是幾大模組:

1、utils工具庫(frameworks/base/libs/utils/目錄下)

這個類庫基於bionic編譯寫,提供了一些對bionic裡面的基礎C/C++類庫中的高層次封裝。Framework中的C++程式大量使用這裡的類庫來封裝更高層的系統功能。

2、binder庫(framewoks/base/libs/binder/目錄下)

這個與OpenBinder開源項目相似,提供了一種進程通訊機制。C++和Java層都大量使用了這種機制。它把通訊雙方分為服務提供者和使用者兩種角色。提供者內部有註冊的服務介面,使用者去尋找調用。

3、ui庫(frameworks/base/libs/ui/目錄下)

這個庫主要提供了UI繪製和視頻輸出兩類介面,整個系統的輸出架構都是以這個庫為基礎,通過它與FrameBuffer通訊。

4、surfaceflinger庫(frameworks/base/libs/surfaceflinger/目錄下)

對ui庫的更高層次的封裝,通過binder機制對Android系統中的上層模組提供輸出服務。

5、audioflinger庫(frameworks/base/libs/audioflinger/目錄下)

音訊輸出基礎類庫,上層模組通過這個庫與驅動還有打交導輸出聲音。

6、大量開源庫(external/目錄下)

這幾大模組構成了整個Framework的基礎。圍繞這幾大模組,就可以構建一個真正的作業系統的上層模組,建立應用程式運行環境了。比較典型的有:

多媒休服務,提供給音視頻播放和錄製服務。

服務管理,維護和管理系統中存在的大量服務提供者,應用程式通過binder機制通過服務管理中心的servicemanager來訪問和使用這些服務,比如電源、藍芽、Wifi等模組都以服務的形式存在於系統中供應用程式調用。

運行時環境,初始化應用程式的運行環境,並載入第一個應用程式,Launcher。

應用程式運行時環境建立完成後,系統就算正式啟動起來了。當一個應用程式被載入到系統中時,它和系統打交導最多的就是系統提供的開發API了。主要集中在frameworks/base/core/目錄下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.