梅嘉欣 翟高粵

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