梅嘉欣 翟高粵
摘 要:Android是一個(gè)基于Linux的開(kāi)放、免費(fèi)的操作系統(tǒng),主要應(yīng)用于移動(dòng)終端,如智能手機(jī)、平板電腦等。它是由30多家科技公司和移動(dòng)電話公司組成的開(kāi)放手機(jī)聯(lián)盟開(kāi)發(fā)。安卓盡量讓用戶體驗(yàn)到最好的服務(wù)質(zhì)量,并讓開(kāi)發(fā)人員獲得更開(kāi)放的水平,以便更方便地進(jìn)行軟件開(kāi)發(fā)。因此,可以通過(guò)Android開(kāi)發(fā)功能更便捷的移動(dòng)應(yīng)用程序。本文主要介紹Android平臺(tái)的體系結(jié)構(gòu)。
關(guān)鍵詞:Linux;Android;移動(dòng)開(kāi)發(fā)
“Android”一詞本意是指機(jī)器人,但我們現(xiàn)在知道它是谷歌推出的開(kāi)源手機(jī)操作系統(tǒng)。Android基于Linux平臺(tái),由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,被稱為第一個(gè)真正面向移動(dòng)終端的開(kāi)放移動(dòng)軟件。作為谷歌移動(dòng)互聯(lián)網(wǎng)戰(zhàn)略的重要組成部分,Android將進(jìn)一步推動(dòng)實(shí)現(xiàn)谷歌企業(yè)“隨時(shí)隨地為每個(gè)人提供信息”的目標(biāo)。
Android是由30多家科技公司包括谷歌、HTC、T-Mobile、高通、摩托羅拉、三星、中國(guó)移動(dòng)和LG在內(nèi)的手機(jī)公司組成的開(kāi)放手機(jī)聯(lián)盟。開(kāi)放手機(jī)聯(lián)盟表示,Android平臺(tái)可以推動(dòng)移動(dòng)設(shè)備的創(chuàng)新,讓用戶體驗(yàn)到最好的服務(wù)質(zhì)量。同時(shí),開(kāi)發(fā)人員將獲得一個(gè)新的開(kāi)放級(jí)別,以獲得更方便的協(xié)同效應(yīng),確保新移動(dòng)設(shè)備的開(kāi)發(fā)速度。因此,Android是第一個(gè)完整、開(kāi)放、免費(fèi)的手機(jī)開(kāi)發(fā)平臺(tái)。
Android系統(tǒng)有以下5個(gè)特點(diǎn):
●開(kāi)放:Android是由開(kāi)放手機(jī)聯(lián)盟的30多家公司開(kāi)發(fā)的,因此谷歌、運(yùn)營(yíng)商、設(shè)備制造商和開(kāi)發(fā)者之間的合作試圖建立一個(gè)標(biāo)準(zhǔn)化、開(kāi)放的手機(jī)軟件平臺(tái),形成移動(dòng)領(lǐng)域開(kāi)放的生態(tài)系統(tǒng)。
●Android平臺(tái)上的應(yīng)用程序之間沒(méi)有邊界,因此它們通過(guò)標(biāo)準(zhǔn)API訪問(wèn)移動(dòng)設(shè)備的核心功能。應(yīng)用程序還可以聲明它們的函數(shù),使它們可供其他應(yīng)用程序使用。
●移動(dòng)設(shè)備上的應(yīng)用程序是平等的,因此它們可以被替換或擴(kuò)展,甚至可以修改撥號(hào)程序或主界面等核心組件。
●應(yīng)用程序可以很容易地嵌入到HTML、JavaScript和樣式表中,網(wǎng)絡(luò)內(nèi)容可以通過(guò)WebView控件顯示。
●Android是一個(gè)完整的多任務(wù)環(huán)境,因此應(yīng)用程序可以并行運(yùn)行。運(yùn)行時(shí)在后臺(tái),它們可以生成通知來(lái)喚醒睡眠中的程序。
一、Android平臺(tái)的體系結(jié)構(gòu)
Android架構(gòu)可以分為四層,從高到低分別是應(yīng)用層、應(yīng)用框架層、硬件抽象層和linux內(nèi)核層,如圖1所示。
(一)應(yīng)用程序?qū)?/p>
應(yīng)用程序?qū)邮怯肑ava語(yǔ)言編寫(xiě)并在虛擬機(jī)上運(yùn)行的程序。事實(shí)上,谷歌在Android系統(tǒng)中捆綁了一些核心應(yīng)用程序,如電子郵件客戶端、短信、日歷、地圖、瀏覽器、聯(lián)系人管理和其他程序。
(二)應(yīng)用框架層
應(yīng)用框架層是指Google發(fā)布的核心應(yīng)用的API。開(kāi)發(fā)人員還可以應(yīng)用這些框架來(lái)開(kāi)發(fā)他們自己的應(yīng)用程序,這可以簡(jiǎn)化程序體系結(jié)構(gòu)設(shè)計(jì),但必須遵守發(fā)展原則。
Android提供以下組件:
●豐富和可擴(kuò)展的視圖:可用于構(gòu)建應(yīng)用程序,包括列表、網(wǎng)格、文本框、按鈕和嵌入式Web瀏覽器。
●內(nèi)容提供者:它允許應(yīng)用程序訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)或共享其數(shù)據(jù)。
●資源管理器:它提供對(duì)非代碼資源的訪問(wèn),如本地字符串、圖形和布局文件。
●通知管理器:應(yīng)用程序可以在狀態(tài)欄顯示自定義通知。
●活動(dòng)管理器:管理應(yīng)用程序的生命周期,也提供常用的導(dǎo)航返回功能。
●窗口管理器:管理所有窗口程序。
●包管理器: Android系統(tǒng)的程序管理。
(三)硬件抽象層
當(dāng)應(yīng)用Android應(yīng)用框架時(shí),Android將通過(guò)一些C/ C++庫(kù)來(lái)支持這些組件,以使它們更好地為我們服務(wù)。所有Java程序都在Dalvik虛擬機(jī)上運(yùn)行,這些庫(kù)包含:
●仿生系統(tǒng)C庫(kù)是C語(yǔ)言的標(biāo)準(zhǔn)庫(kù),也是系統(tǒng)的底層庫(kù)。由Linux系統(tǒng)調(diào)用。
●媒體框架:基于PacketVideo,OpenCORE來(lái)支持播放和錄制多種格式的音頻和視頻,如MPEG4,MP3,AAC,AMR,JPG,PNG。
●SGL:2D圖形引擎庫(kù)。
●SSL:位于TCP/IP協(xié)議和其他應(yīng)用協(xié)議之間,支持?jǐn)?shù)據(jù)通信。
●OpenGL ES1.0:支持3D效果。
●SQLite:關(guān)系數(shù)據(jù)庫(kù)。
●Webkit:Web瀏覽器引擎。
●FreeType:位圖和矢量。
與PC類似,每個(gè)Android應(yīng)用程序都有自己的進(jìn)程,Dalvik虛擬機(jī)只以“.dex”的形式執(zhí)行可執(zhí)行文件。因此,在編譯完Java程序后,還需要通過(guò)SDK中的dx工具將它們轉(zhuǎn)移到“.dex”中才能在虛擬機(jī)上運(yùn)行。
2007年底Google正式發(fā)布Android ADK,Dalvik虛擬機(jī)首次進(jìn)入人們的視野。它對(duì)內(nèi)存的高效利用和低速CPU的高性能確實(shí)讓人刮目相看。Android系統(tǒng)可以簡(jiǎn)單地完成進(jìn)程隔離和線程管理。每個(gè)Android應(yīng)用程序?qū)?yīng)于底部的一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例,其代碼在虛擬機(jī)解釋中執(zhí)行。綜上所述,Dalvik虛擬機(jī)具有以下特點(diǎn):
●專有文件格式.dex:它放棄.class文件并應(yīng)用新的.dex格式提高了文件解析和搜索速度,并且還支持新的操作代碼。
●對(duì)索引文件的優(yōu)化:對(duì)索引文件結(jié)構(gòu)進(jìn)行了優(yōu)化,進(jìn)一步提高了索引文件的性能運(yùn)行性能,包括調(diào)整所有字段的字節(jié)序列,驗(yàn)證中的所有類.dex文件,并優(yōu)化一些特定類和方法的操作代碼。
●寄存器:與基于棧的虛擬機(jī)相比,基于寄存器的虛擬機(jī)在硬件和通用性方面較弱,但其代碼執(zhí)行效率較高。
●一個(gè)應(yīng)用程序、一個(gè)虛擬機(jī)實(shí)例、一個(gè)進(jìn)程:每個(gè)Android應(yīng)用程序運(yùn)行在一個(gè)Dalvik虛擬機(jī)實(shí)例中,每個(gè)虛擬機(jī)實(shí)例是一個(gè)獨(dú)立的進(jìn)程空間。線程機(jī)制、內(nèi)存分配和管理、互斥鎖的實(shí)現(xiàn)都依賴于底層操作系統(tǒng)。每個(gè)Android應(yīng)用程序線程對(duì)應(yīng)一個(gè)Linux線程,因此虛擬機(jī)可以更多地依賴于虛擬機(jī)的線程調(diào)度和管理機(jī)制。不同的應(yīng)用程序運(yùn)行在不同的線程空間,不同資源的應(yīng)用程序由不同的Linux用戶運(yùn)行,最大限度地保護(hù)了應(yīng)用程序的安全性和獨(dú)立運(yùn)行。
(四)Linux內(nèi)核層
Android的核心系統(tǒng)服務(wù)是基于Linux2.5內(nèi)核的,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧、驅(qū)動(dòng)模型等。Linux內(nèi)核也是硬件和軟件棧之間的抽象層。Android更需要的是與手機(jī)驅(qū)動(dòng)相關(guān)的驅(qū)動(dòng)如下所示。
●顯示驅(qū)動(dòng):基于Linux的幀緩沖驅(qū)動(dòng)。
●鍵盤(pán)驅(qū)動(dòng)程序:輸入設(shè)備,鍵盤(pán)的驅(qū)動(dòng)程序。
●Flash存儲(chǔ)驅(qū)動(dòng):基于MTD的Flash驅(qū)動(dòng)。
●攝像頭驅(qū)動(dòng):常用的基于Linux的視頻(v412)驅(qū)動(dòng)。
●音頻驅(qū)動(dòng)程序:高級(jí)Linux聲音架構(gòu)(ALSA)。
●藍(lán)牙驅(qū)動(dòng):基于IEEE 802.15.1的無(wú)線傳輸技術(shù)。
●WiFi驅(qū)動(dòng):基于IEEE 802.11。
●Binder IPC Driver: Android的專用驅(qū)動(dòng)程序,具有單個(gè)設(shè)備節(jié)點(diǎn),提供進(jìn)程間的通信功能。
●電源管理:如電池電量。
二、結(jié)論
本文主要介紹了Android平臺(tái)的體系結(jié)構(gòu),詳細(xì)介紹了Android平臺(tái)的架構(gòu)組成,并對(duì)應(yīng)用層、應(yīng)用框架層、硬件抽象層和linux內(nèi)核層進(jìn)行了詳細(xì)的介紹和分析,對(duì)于初步接觸Android的初學(xué)者有一定參考價(jià)值。
參考文獻(xiàn):
[1]劉凡馨等. Android移動(dòng)應(yīng)用開(kāi)發(fā)基礎(chǔ)教程 [M]. 人民郵電出版社,2018.
[2]胡敏等. Android移動(dòng)應(yīng)用設(shè)計(jì)與開(kāi)發(fā)[M].人民郵電出版社, 2021.
[2]劉剛等. Android移動(dòng)開(kāi)發(fā)基礎(chǔ)教程[M].人民郵電出版社, 2019.
作者簡(jiǎn)介:梅嘉欣(2002—),女,研究方向:軟件開(kāi)發(fā)。