新聞中心
Android架構(gòu)設(shè)計的思想與原則是什么?
rlei分析了Android的設(shè)計哲學(xué):
創(chuàng)新互聯(lián)公司專注于老河口企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。老河口網(wǎng)站建設(shè)公司,為老河口等地區(qū)提供建站服務(wù)。全流程按需開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
理解好Intent,就可以理解Android哲學(xué)(所有應(yīng)用生來平等)的一部分。舉個簡單的例子,iOS里面應(yīng)用要集成SNS如facebook/twitter/sina weibo等,都需要應(yīng)用自己實現(xiàn)(iOS5也只是集成twitter一家);Android上只需要廣播一個share內(nèi)容的intent。從理解Intent如何工作開始,你就在慢慢理解Activity Manager, Package Manager, Services這些Android的重要組件是如何工作的。
另外Binder是Android架構(gòu)里非常核心的一塊。Android基于Intent的消息傳遞和組件/應(yīng)用解耦,下面的基礎(chǔ)都是Binder IPC。在這一點上,Android實際上是光榮的傳承了BeOS和Palm OS 6(悲催的OS6...)未能發(fā)揚光大的一部分。
MVC(Content Provider, Activity, Layout, Adapters)這個比較基礎(chǔ),也不算Android特有的。
Content Provider對數(shù)據(jù)訪問的抽象也是比較有意思的一塊。理想情況下,content provider可以讓客戶端用URI以語義化的方式訪問數(shù)據(jù)(URI本身即表示數(shù)據(jù)層次結(jié)構(gòu)和查詢條件),而下面數(shù)據(jù)庫表的結(jié)構(gòu)可以任意變動,不影響客戶端代碼。當(dāng)然實做的時候content provider還是會被各種復(fù)雜的where子句暴露出SQL的實現(xiàn)細節(jié)
至于Android的權(quán)限管理,其實比較簡單,主要是利用現(xiàn)成的Linux安全模型,進程之間相互隔離。API級別的權(quán)限管理和JVM類似。
Billy Cui重點解析了權(quán)限系統(tǒng)的設(shè)計:
Android的權(quán)限系統(tǒng)是基于Linux,但又增加了很多自己的控制模塊。
總體上來說,其分為以下幾部分權(quán)限系統(tǒng):
1. userid : 繼承于linux,對于多個app,通過shareuid的方式可以使用同一個userid,主要承擔(dān)一些目錄訪問權(quán)限之類的工作,比如私有目錄只能由同一uid應(yīng)用訪問。
2. 安裝level:system level or app level,這個是根據(jù)應(yīng)用的安裝位置決定的,在system/app下安裝的應(yīng)用就是system level,在權(quán)限訪問中會得到更多的權(quán)限,比如靜默安裝應(yīng)用的權(quán)限等。
3. permission : 這個是最主要的權(quán)限控制,一般開發(fā)者開發(fā)應(yīng)用主要是接觸這個部分,在這部分中,會根據(jù)應(yīng)用在AndroidManifest.xml中聲明的use-permission而在訪問相應(yīng)api或資源時判斷其是否有訪問權(quán)限,比如常用的android.permission.INTERNET等。
4. signature: 簽名,是Android權(quán)限系統(tǒng)中的重要組成部分,對于系統(tǒng)簽名的應(yīng)用,會有一些特殊的功能,而shareuid等特性也是需要同一簽名作為基礎(chǔ)。此外,permission在設(shè)置/自定義其權(quán)限時也經(jīng)常會使用到簽名,比如控制只有我自己的應(yīng)用才可以訪問我自己定義的公開API。
除此以外,其實Android在uid的里面設(shè)置了一些預(yù)定義有特殊功能的uid,比如system/media等,在配置其system level的services的時候會用到。
董兆輝則認為Android主要是基于組件搭配思想:
說到Android架構(gòu)的設(shè)計思想和原則,按我的理解主要是組件搭配,即在用戶看來,所有的module或者組件,都是可以重復(fù)利用和簡單組合的。想法是好的,不過有得必有失,或者說Android現(xiàn)在做的還不夠好,在性能方面是很低的,否則的話Android也不會推出補?。∟DK之類的,dalvik的不斷升級)。
我覺得所有Framework或者平臺或者語言都想給應(yīng)用開發(fā)者最方便使用的接口,最人性化的體驗,同時又要爭取最大的性能,兩者權(quán)衡折中吧。不過隨著硬件速度的飛速增長,性能的權(quán)重會變低。
范懷宇還談到了資源體系:
Android架設(shè)在Linux之上,因此,繼承了Linux可移植性、用戶管理機制、文件系統(tǒng),等等。
Android的核心在Framework層,本質(zhì)上,這是一個基于組件的應(yīng)用開發(fā)系統(tǒng),組件間通過消息(Intent)進行通信。一方面,Intent是通信信息的載體,另一方面,Intent也定義了Android組件的通信協(xié)議。
Android可以對組件所運行的進程做托管,在Android中,進程概念相當(dāng)薄弱。依賴于進程托管,Android可以輕松支撐多任務(wù)多進程的應(yīng)用模型。
Android的系統(tǒng)架構(gòu)包括哪些部分
Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。Android分為四個層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和Linux內(nèi)核層。
一、應(yīng)用程序
Android會同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。
二、應(yīng)用程序框架
開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計簡化了組件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)。同樣,該應(yīng)用程序重用機制也使用戶可以方便的替換程序組件。
三、系統(tǒng)運行庫
Android 包含一些C/C++庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。
四、Linux內(nèi)核層
Android內(nèi)核是基于Linux 內(nèi)核的修改的內(nèi)核版本,它提供了用于支持Android平臺的設(shè)備驅(qū)動。
android的系統(tǒng)架構(gòu)
android系統(tǒng)架構(gòu)分從下往上為linux 內(nèi)核層、運行庫、應(yīng)用程序框架層、和應(yīng)用程序?qū)?/p>
linuxkernel:負責(zé)硬件的驅(qū)動程序、網(wǎng)絡(luò)、電源、系統(tǒng)安全以及內(nèi)存管理等功能。
libraries和 androidruntime:libraries:即c/c++函數(shù)庫部分,大多數(shù)都是開放源代碼的函數(shù)庫,例如webkit,該函數(shù)庫負責(zé) android網(wǎng)頁瀏覽器的運行,例如標(biāo)準(zhǔn)的c函數(shù)庫libc、openssl、sqlite等,當(dāng)然也包括支持游戲開發(fā)2dsgl和 3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負責(zé)解釋和執(zhí)行生成的dalvik格式的字節(jié)碼。
applicationframework(應(yīng)用軟件架構(gòu)),java應(yīng)用程序開發(fā)人員主要是使用該層封裝好的api進行快速開發(fā)。
applications:該層是java的應(yīng)用程序?qū)?,android內(nèi)置的googlemaps、e-mail、即時通信工具、瀏覽器、mp3播放 器等處于該層,java開發(fā)人員開發(fā)的程序也處于該層,而且和內(nèi)置的應(yīng)用程序具有平等的位置,可以調(diào)用內(nèi)置的應(yīng)用程序,也可以替換內(nèi)置的應(yīng)用程序。
上面的四個層次,下層為上層服務(wù),上層需要下層的支持,調(diào)用下層的服務(wù),這種嚴(yán)格分層的方式帶來的極大的穩(wěn)定性、靈活性和可擴展性,使得不同層的開發(fā)人員可以按照規(guī)范專心特定層的開發(fā)。
android應(yīng)用程序使用框架的api并在框架下運行,這就帶來了程序開發(fā)的高度一致性,另一方面也告訴我們,要想寫出優(yōu)質(zhì)高效的程序就必須對整個 applicationframework進行非常深入的理解。精通applicationframework,你就可以真正的理解android的設(shè)計 和運行機制,也就更能夠駕馭整個應(yīng)用層的開發(fā)。
網(wǎng)站題目:android架構(gòu)設(shè)計,簡述android體系架構(gòu)
本文URL:http://fisionsoft.com.cn/article/hojdid.html