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