資源描述:
《android系統(tǒng)架構(gòu)概述》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Android的架構(gòu)圖如下,圖中按照功能結(jié)構(gòu)及面向人群進(jìn)行劃分,可以看出Android分成三個部分: 應(yīng)用部分:包含在Android設(shè)備上運行的所有應(yīng)用,它們是Android系統(tǒng)中直接面向用戶的部分?! 『诵牟糠郑篈ndroid系統(tǒng)中核心的功能實現(xiàn),包括應(yīng)用框架、核心類庫等,每個Android應(yīng)用的開發(fā)者,都是在此基礎(chǔ)上進(jìn)行應(yīng)用開發(fā)的?! 〉讓硬糠郑褐饕窤ndroid寄宿的Linux操作系統(tǒng)及相關(guān)驅(qū)動。通常來說,只有硬件廠商和從事Android移植的開發(fā)者,才會基于此來進(jìn)行開發(fā)?! 〕松鲜鰟澐址绞揭酝?,從系統(tǒng)實際的架構(gòu)模型來
2、看,Android則可以分成以下幾個層次: 應(yīng)用層 框架層 運行時 核心類庫 硬件抽象層 Linux內(nèi)核 本文的后續(xù)內(nèi)容將針對以上各層逐一進(jìn)行分析。 1.1.1 應(yīng)用層 對于普通的用戶而言,只能通過具體的應(yīng)用來判斷移動平臺的優(yōu)劣。即便一個移動平臺具有最華麗的技術(shù),但是如果不能給用戶提供最得心應(yīng)手的應(yīng)用,頂多也只能贏得無冕之王的名頭,而無法抓住用戶的心,贏得市場的認(rèn)可?! ndroid應(yīng)用層由運行在Android設(shè)備上的所有應(yīng)用共同構(gòu)成,它不僅包括通話、短信、聯(lián)系人等系統(tǒng)應(yīng)用(隨Android系統(tǒng)一起預(yù)裝在移動設(shè)
3、備上),還包括其他后續(xù)安裝到設(shè)備中的第三方應(yīng)用。 第三方應(yīng)用都是基于Android提供的SDK(SoftwareDevelopmentKit)進(jìn)行開發(fā)的,并受到SDK接口的約束。而預(yù)裝在設(shè)備中的系統(tǒng)應(yīng)用,則可以調(diào)用整個框架層的接口和模塊,其中的很多接口在SDK中是隱藏的,因此,系統(tǒng)應(yīng)用具有比第三方應(yīng)用更多的權(quán)利?! ndroid的應(yīng)用都是基于Java語言來開發(fā)的,但在很多應(yīng)用(尤其是游戲)中,需要進(jìn)行大規(guī)模的運算和圖形處理,以及使用開源C/C++類庫。通過Java來實現(xiàn),可能會有執(zhí)行效率過低和移植成本過高等問題。因此在Andr
4、oid開發(fā)中,開發(fā)者可以使用C/C++來實現(xiàn)底層模塊,并添加JNI(JavaNativeInterface)接口與上層Java實現(xiàn)進(jìn)行交互,然后利用Android提供的交叉編譯工具生成類庫并添加到應(yīng)用中?! 榱俗寫?yīng)用開發(fā)者能夠繞過框架層,直接使用Android系統(tǒng)的特定類庫,Android還提供了NDK(NativeDevelopmentKit),它由C/C++的一些接口構(gòu)成,開發(fā)者可以通過它更高效地調(diào)用特定的系統(tǒng)功能?! 〉贏ndroid上,開發(fā)者通常只能使用C/C++編寫功能類庫,而不是整個應(yīng)用。這是因為,諸如界面繪制、進(jìn)
5、程調(diào)度等核心機制是部署在框架層并通過Java來實現(xiàn)的,應(yīng)用只有按照它們規(guī)定的模式去編寫特定的Java模塊和配置信息,才能夠被識別、加載和執(zhí)行?! ⌒≠N士 從Android2.3(API9)開始,新增了android.app.NativeActivity類,它是通過調(diào)用預(yù)定義的JNI接口來實現(xiàn)的。開發(fā)者可以基于NDK,通過C/C++語言來實現(xiàn)具體功能。這就意味著,開發(fā)者僅通過C/C++語言就能實現(xiàn)整個應(yīng)用。這對于游戲開發(fā)者而言是一大喜訊,但由于控件在Android中并沒有Native的實現(xiàn),普通的應(yīng)用開發(fā)者通常還是需要通過Java來
6、實現(xiàn)上層界面?! ?.1.2 框架層 框架層是Android系統(tǒng)中最核心的部分,它集中體現(xiàn)了Android系統(tǒng)的設(shè)計思想。在Android之前,有很多基于Linux內(nèi)核打造的移動平臺。作為超越前輩的成功范例,框架層的設(shè)計正是Android脫穎而出的關(guān)鍵所在?! 】蚣軐佑啥鄠€系統(tǒng)服務(wù)(SystemService)共同組成,包括組件管理服務(wù)、窗口管理服務(wù)、地理信息服務(wù)、電源管理服務(wù)、通話管理服務(wù),等等。所有服務(wù)都寄宿在系統(tǒng)核心進(jìn)程(SystemCoreProcess)中,在運行時,每個服務(wù)都占據(jù)一個獨立的線程,彼此通過進(jìn)程間的通信機
7、制(Inter-ProcessCommunication,IPC)發(fā)送消息和傳輸數(shù)據(jù)。 應(yīng)用層中的應(yīng)用,時刻都在與這些系統(tǒng)服務(wù)打交道。每一次構(gòu)造窗口、處理用戶交互事件、繪制界面、獲得當(dāng)前地理信息、了解設(shè)備信息等操作,都是在各個系統(tǒng)服務(wù)的支持下實現(xiàn)的?! 《鴮τ陂_發(fā)者而言,框架層最直觀的體現(xiàn)就是SDK,它通過一系列的Java功能模塊,來實現(xiàn)應(yīng)用所需的功能。SDK的設(shè)計決定了上層應(yīng)用的開發(fā)模式、開發(fā)效率及能夠?qū)崿F(xiàn)的功能范疇。因此,對于開發(fā)者而言,關(guān)注SDK的變遷是一件很有必要的事情,SDK每個新版本的誕生,都意味著一些老的接口會被調(diào)
8、整或拋棄,另一些新的接口和功能火熱出爐。開發(fā)者不但要查看和關(guān)注那些被修改的接口,來檢查應(yīng)用的兼容性,并采取相應(yīng)的策略去適應(yīng)這些變化,更重要的是,開發(fā)者還要追蹤新提供的接口,尋找改進(jìn)應(yīng)用的機會,甚至是尋求開發(fā)新應(yīng)用的可能?! 南到y(tǒng)設(shè)計的角度來看,A