王勇 蘇州大學計算機科學與技術學院
Android由2007年發(fā)布至今約11年了。2007年,在IOS發(fā)布后,Google緊隨其后與眾多移動技術和無線應用領域公司合作,向世界公布了開源手機操作系統(tǒng)Android。其開源的特性,讓眾多開發(fā)者蜂擁而至,紛紛加入開發(fā)Android應用程序的隊伍中來。Android平臺借助本身良好的系統(tǒng)開放性和易用性,幾年內就迅速占領了手機行業(yè),在移動領域得到了廣泛應用,如今已一度成為智能手機系統(tǒng)平臺的標準配備。在Android系統(tǒng)如此火熱的趨勢下,我們可以深入研究力求發(fā)現(xiàn)其更高的價值,從Android系統(tǒng)架構與應用開發(fā)的方向,爭取不斷取得新的進展。
概念化的系統(tǒng)內核,可以說是介于系統(tǒng)軟件和硬件兩者的一種的抽象層。系統(tǒng)內核一方面的功能是建立在硬件之上,隱藏系統(tǒng)硬件細節(jié),提供用戶與硬件交互的接口;另一方面,內核也始終在給系統(tǒng)上層結構提供統(tǒng)一的服務。其特點就是能夠實現(xiàn)本體層與下層差異的屏蔽,也就是說,如果本身發(fā)生變化也不會對上層的運行產(chǎn)生影響。
但是深入分析其內核設計,我們要意識到內核層不是類GUN/Linux的系統(tǒng),使用YAFFS2文件系統(tǒng)且不會生產(chǎn)虛擬內存文件[2]。Android的內核層比起Linux系統(tǒng)有多處擴展,設置了豐富的系統(tǒng)初始化接口與系統(tǒng)庫、程序接口等。Android本質上是以Linux2.6底層基礎開發(fā)的系統(tǒng),于是其內核層還可以實現(xiàn)許多Linux核心系統(tǒng)服務,繼承了Linux優(yōu)秀的網(wǎng)絡堆棧、硬件驅動程序、系統(tǒng)安全機制和內存管理功能。
Android系統(tǒng)架構中一項重要的部分就是系統(tǒng)函數(shù)庫。Android的函數(shù)庫中包含了C/C++原生庫,自身也具備了開放源碼的函數(shù)庫。由于Android系統(tǒng)的開源的應用程序框架,開發(fā)者可以充分利用函數(shù)庫實現(xiàn)各類功能,例如OpenSSL、C函數(shù)庫Libc等。軟件系統(tǒng)運行時,網(wǎng)頁函數(shù)庫負責網(wǎng)頁瀏覽器類應用的構建、OpenSSL提供媒體庫的運行支持。在這些函數(shù)庫的支持下,開發(fā)者能夠方便地實現(xiàn)音頻和視頻格式的播放和錄制、管理靜態(tài)圖像文件。
運行界面方面,Android含有的二維和三維圖形使子系統(tǒng)能夠快速顯示管理和并且與多個應用程序的無縫組合。系統(tǒng)運行工程中。庫與函數(shù)庫是處于迸發(fā)運行狀態(tài)下,Android的函數(shù)庫與Java函數(shù)庫時刻處理運行碼的轉換。Android的另一優(yōu)勢就是Java語言的廣泛利用,在JAVA條件下,Dalvik虛擬機也可以支持編寫Android應用程序,并且兼顧多個應用程序的迸發(fā)運行。因為Dalvik虛擬機也是基于Linux內核開發(fā)的,能夠執(zhí)行.dex格式的文件.在處理器速度和內存有限的系統(tǒng)中使用十分便利。
分析Android的應用軟件架構,我們可以發(fā)現(xiàn)架構是系統(tǒng)重點應用程序的總集合,架構可以幫助程序開發(fā)者能夠在設計應用時更加便利搭建應用程序。常見的應用程序中會提供包括消息方塊、內嵌式瀏覽器和按鈕的用戶交互功能,且提供了分享信息和訪問信息等消息提供功能,另外重要的是使系統(tǒng)支持了資源管理器功能和消息提示功能等豐富的基礎功能。總的來說,應用軟件架構就是以一組系統(tǒng)和服務構成了體系,開發(fā)者利用體系可以輕松地進行應用程序的開發(fā),系統(tǒng)本身就內嵌了視圖結合和網(wǎng)絡瀏覽器,支持應用程序的訪問動作。另外一點。應用的軟件架構也能夠在系統(tǒng)狀態(tài)欄中報告程序的請,并管理程序的生命周期。
Android系統(tǒng)的系統(tǒng)級應用程序或者說是上層應用程序,例如,即時通信工具、通訊本、GoogleMaps等,都是使用Java語言進行開發(fā)的。
Android的多個組件一同構成了Android應用程序。應用程序中包含的主要有以下幾種組件:Activity、Service、ContentProvider、BroadcastReceiver和Intent組件。
Activity組件負責應用程序的表示層,在應用程序的需要進行屏幕顯示時調用。同時Activity組件有豐富的圖形化界面組件,開發(fā)者合理地配置可以給用戶實現(xiàn)GUI,借助GUI達到程序交互的效果。
Service組件控制程序的后臺運行,在應用程序長期在后臺運行時提供服務。
BroadcastReceiver組件的功能是接收用戶的廣播通知,例如電量不足、用戶系統(tǒng)設置更改和短信息等狀態(tài)信息和通知提示,相當于一個容器給不同的內容,所以說針對不同的信息都要對其設置對應的BroadcastReceiver組件。
ContentProvider則為系統(tǒng)內容提供儲存空間,也可以把系統(tǒng)應用程序的數(shù)據(jù)傳送到其他程序中,提供給用戶數(shù)據(jù)讀寫和存儲的功能。
最后,Intent組件屬于運行綁定機制。使用Intent組件必須向系統(tǒng)表達請求或意愿,系統(tǒng)才能夠參考其請求進行組件的分配。
Android應用程序開發(fā)分為應用程序開發(fā)和開發(fā)環(huán)境兩個部分。
以Windows系統(tǒng)環(huán)境下為例,Android應用程序開發(fā)普遍使用Eclipse+ADT作為開發(fā)工具。在下載JDK包后進行安裝,然后進行系統(tǒng)環(huán)境變量的添加與修改就完成了JAVA開發(fā)環(huán)境的搭建。另外,開發(fā)者還要下載AndroidSDK就可以進行模擬器的安裝,便于今后Android應用程序的調試。
總的來說,Android系統(tǒng)是一個基于Linux開發(fā)的,優(yōu)秀的智能手機操作系統(tǒng)。其優(yōu)秀而開源的系統(tǒng)加上豐富的系統(tǒng)組件,能夠給眾多開發(fā)人員在應用程序的開發(fā)得到更加流暢的體驗。今后,勢必會有更多的程序開發(fā)人員加入Android開發(fā)的隊伍,我們也將更加深入的發(fā)掘系統(tǒng)的價值,實現(xiàn)更加深度的智能化。