android系統(tǒng)架構(gòu)分從下往上為linux 內(nèi)核層、運(yùn)行庫(kù)、應(yīng)用程序框架層、和應(yīng)用程序?qū)?/p>
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)網(wǎng)站制作、做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
linuxkernel:負(fù)責(zé)硬件的驅(qū)動(dòng)程序、網(wǎng)絡(luò)、電源、系統(tǒng)安全以及內(nèi)存管理等功能。
libraries和 androidruntime:libraries:即c/c++函數(shù)庫(kù)部分,大多數(shù)都是開放源代碼的函數(shù)庫(kù),例如webkit,該函數(shù)庫(kù)負(fù)責(zé) android網(wǎng)頁(yè)瀏覽器的運(yùn)行,例如標(biāo)準(zhǔn)的c函數(shù)庫(kù)libc、openssl、sqlite等,當(dāng)然也包括支持游戲開發(fā)2dsgl和 3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負(fù)責(zé)解釋和執(zhí)行生成的dalvik格式的字節(jié)碼。
applicationframework(應(yīng)用軟件架構(gòu)),java應(yīng)用程序開發(fā)人員主要是使用該層封裝好的api進(jìn)行快速開發(fā)。
applications:該層是java的應(yīng)用程序?qū)樱琣ndroid內(nèi)置的googlemaps、e-mail、即時(shí)通信工具、瀏覽器、mp3播放 器等處于該層,java開發(fā)人員開發(fā)的程序也處于該層,而且和內(nèi)置的應(yīng)用程序具有平等的位置,可以調(diào)用內(nèi)置的應(yīng)用程序,也可以替換內(nèi)置的應(yīng)用程序。
上面的四個(gè)層次,下層為上層服務(wù),上層需要下層的支持,調(diào)用下層的服務(wù),這種嚴(yán)格分層的方式帶來的極大的穩(wěn)定性、靈活性和可擴(kuò)展性,使得不同層的開發(fā)人員可以按照規(guī)范專心特定層的開發(fā)。
android應(yīng)用程序使用框架的api并在框架下運(yùn)行,這就帶來了程序開發(fā)的高度一致性,另一方面也告訴我們,要想寫出優(yōu)質(zhì)高效的程序就必須對(duì)整個(gè) applicationframework進(jìn)行非常深入的理解。精通applicationframework,你就可以真正的理解android的設(shè)計(jì) 和運(yùn)行機(jī)制,也就更能夠駕馭整個(gè)應(yīng)用層的開發(fā)。
Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。Android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。
一、應(yīng)用程序
Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫的。
二、應(yīng)用程序框架
開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。
三、系統(tǒng)運(yùn)行庫(kù)
Android 包含一些C/C++庫(kù),這些庫(kù)能被Android系統(tǒng)中不同的組件使用。它們通過 Android 應(yīng)用程序框架為開發(fā)者提供服務(wù)。
四、Linux內(nèi)核層
Android內(nèi)核是基于Linux 內(nèi)核的修改的內(nèi)核版本,它提供了用于支持Android平臺(tái)的設(shè)備驅(qū)動(dòng)。
Android系統(tǒng)構(gòu)架是安卓系統(tǒng)的體系結(jié)構(gòu),android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu),共分為四層,從高到低分別是Android應(yīng)用層,Android應(yīng)用框架層,Android系統(tǒng)運(yùn)行庫(kù)層和Linux內(nèi)核層。
Android系統(tǒng)構(gòu)架主要應(yīng)用于ARM平臺(tái),但不僅限于ARM,通過編譯控制,在X86、MAC等體系結(jié)構(gòu)的機(jī)器上同樣可以運(yùn)行。
中文名
安卓系統(tǒng)構(gòu)架
外文名
Android systematic framework
Android系統(tǒng)架構(gòu)分為四層架構(gòu),從高到低分別是應(yīng)用層,應(yīng)用框架層,系統(tǒng)運(yùn)行層和Linux內(nèi)核層。
Android系統(tǒng)體系結(jié)構(gòu)
1.應(yīng)用層
Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。它們一般都是使用Java進(jìn)行編寫。
2.應(yīng)用框架層
開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。
android應(yīng)用開發(fā)框架是ApplicationFramework.其系統(tǒng)架構(gòu)由5部分組成,分別是:LinuxKernel、AndroidRuntime、Libraries、ApplicationFramework、Applications。第二部分將詳細(xì)介紹這5個(gè)部分。下面自底向上分析各層。Android架構(gòu)1、LinuxKernelAndroid基于Linux2.6提供核心系統(tǒng)服務(wù),例如:安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)模型。LinuxKernel也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。如果你學(xué)過計(jì)算機(jī)網(wǎng)絡(luò)知道OSI/RM,就會(huì)知道分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。也就是說各層各盡其職,各層提供固定的SAP(ServiceAccessPoint),專業(yè)點(diǎn)可以說是高內(nèi)聚、低耦合。如果你只是做應(yīng)用開發(fā),就不需要深入了解LinuxKernel層。2、AndroidRuntimeAndroid包含一個(gè)核心庫(kù)的集合,提供大部分在Java編程語(yǔ)言核心類庫(kù)中可用的功能。每一個(gè)Android應(yīng)用程序是Dalvik虛擬機(jī)中的實(shí)例,運(yùn)行在他們自己的進(jìn)程中。Dalvik虛擬機(jī)設(shè)計(jì)成,在一個(gè)設(shè)備可以高效地運(yùn)行多個(gè)虛擬機(jī)。Dalvik虛擬機(jī)可執(zhí)行文件格式是.dex,dex格式是專為Dalvik設(shè)計(jì)的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。大多數(shù)虛擬機(jī)包括JVM都是基于棧的,而Dalvik虛擬機(jī)則是基于寄存器的。兩種架構(gòu)各有優(yōu)劣,一般而言,基于棧的機(jī)器需要指令,而基于寄存器的機(jī)器指令更大。dx是一套工具,可以將Java.class轉(zhuǎn)換成.dex格式。一個(gè)dex文件通常會(huì)有多個(gè).class。由于dex有時(shí)必須進(jìn)行最佳化,會(huì)使文件大小增加1-4倍,以O(shè)DEX結(jié)尾。Dalvik虛擬機(jī)依賴于Linux內(nèi)核提供基本功能,如線程和底層內(nèi)存管理。3、LibrariesAndroid包含一個(gè)C/C++庫(kù)的集合,供Android系統(tǒng)的各個(gè)組件使用。這些功能通過Android的應(yīng)用程序框架(applicationframework)暴露給開發(fā)者。下面列出一些核心庫(kù):系統(tǒng)C庫(kù)--標(biāo)準(zhǔn)C系統(tǒng)庫(kù)(libc)的BSD衍生,調(diào)整為基于嵌入式Linux設(shè)備媒體庫(kù)--基于PacketVideo的OpenCORE。這些庫(kù)支持播放和錄制許多流行的音頻和視頻格式,以及靜態(tài)圖像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG界面管理--管理訪問顯示子系統(tǒng)和無縫組合多個(gè)應(yīng)用程序的二維和三維圖形層LibWebCore--新式的Web瀏覽器引擎,驅(qū)動(dòng)Android瀏覽器和內(nèi)嵌的web視圖SGL--基本的2D圖形引擎3D庫(kù)--基于OpenGLES1.0APIs的實(shí)現(xiàn)。庫(kù)使用硬件3D加速或包含高度優(yōu)化的3D軟件光柵FreeType--位圖和矢量字體渲染SQLite--所有應(yīng)用程序都可以使用的強(qiáng)大而輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎4、ApplicationFramework通過提供開放的開發(fā)平臺(tái),Android使開發(fā)者能夠編制極其豐富和新穎的應(yīng)用程序。開發(fā)者可以自由地利用設(shè)備硬件優(yōu)勢(shì)、訪問位置信息、運(yùn)行后臺(tái)服務(wù)、設(shè)置鬧鐘、向狀態(tài)欄添加通知等等,很多很多。開發(fā)者可以完全使用核心應(yīng)用程序所使用的框架APIs。應(yīng)用程序的體系結(jié)構(gòu)旨在簡(jiǎn)化組件的重用,任何應(yīng)用程序都能發(fā)布他的功能且任何其他應(yīng)用程序可以使用這些功能(需要服從框架執(zhí)行的安全限制)。這一機(jī)制允許用戶替換組件。所有的應(yīng)用程序其實(shí)是一組服務(wù)和系統(tǒng),包括:視圖(View)--豐富的、可擴(kuò)展的視圖集合,可用于構(gòu)建一個(gè)應(yīng)用程序。包括包括列表、網(wǎng)格、文本框、按鈕,甚至是內(nèi)嵌的網(wǎng)頁(yè)瀏覽器內(nèi)容提供者(ContentProviders)--使應(yīng)用程序能訪問其他應(yīng)用程序(如通訊錄)的數(shù)據(jù),或共享自己的數(shù)據(jù)資源管理器(ResourceManager)--提供訪問非代碼資源,如本地化字符串、圖形和布局文件通知管理器(NotificationManager)--使所有的應(yīng)用程序能夠在狀態(tài)欄顯示自定義警告活動(dòng)管理器(ActivityManager)--管理應(yīng)用程序生命周期,提供通用的導(dǎo)航回退功能5、ApplicationsAndroid裝配一個(gè)核心應(yīng)用程序集合,包括電子郵件客戶端、SMS程序、日歷、地圖、瀏覽器、聯(lián)系人和其他設(shè)置。所有應(yīng)用程序都是用Java編程語(yǔ)言寫的。更加豐富的應(yīng)用程序有待我們?nèi)ラ_發(fā)!從上面我們知道Android的架構(gòu)是分層的,非常清晰,分工很明確。Android本身是一套軟件堆迭(SoftwareStack),或稱為「軟件迭層架構(gòu)」,迭層主要分成三層:操作系統(tǒng)、中間件、應(yīng)用程序。從上面我們也看到了開源的力量,一個(gè)個(gè)熟悉的開源軟件在這里貢獻(xiàn)了自己的一份力量。
Android開發(fā)中,在打包發(fā)布應(yīng)用時(shí)會(huì)選擇應(yīng)用適配的cpu架構(gòu)平臺(tái),在引用第三方庫(kù)時(shí)也遇到根據(jù)不同cpu架構(gòu)引入相應(yīng)的so包。Android主要包括一下cpu架構(gòu):
在Android系統(tǒng)上,每一個(gè)CPU架構(gòu)對(duì)應(yīng)一個(gè)ABI:
ABI是Application Binary Interface的縮寫,常表示兩個(gè)程序模塊之間的接口,且其中一個(gè)模塊常為機(jī)器碼級(jí)別的library或操作系統(tǒng)。它定義了函數(shù)庫(kù)的調(diào)用、應(yīng)用的二進(jìn)制文件(尤其是.so)如何運(yùn)行在相應(yīng)的系統(tǒng)平臺(tái)上等細(xì)節(jié)。其中mips及mips64極少用于手機(jī),出發(fā)點(diǎn)是高性能,主要用于路由器、貓。
從CPU發(fā)明到現(xiàn)在,有非常多種架構(gòu),從我們熟悉的X86,ARM,到不太熟悉的MIPS,IA64,它們之間的差距都非常大。但是如果從最基本的邏輯角度來分類的話,它們可以被分為兩大類,即所謂的“復(fù)雜指令集(CISC)”與“精簡(jiǎn)指令集(RISC)”系統(tǒng)。
Intel和ARM處理器的第一個(gè)區(qū)別是,前者使用復(fù)雜指令集(CISC),后者使用精簡(jiǎn)指令集(RISC)。屬于這兩種類中的各種架構(gòu)之間最大的區(qū)別,在于它們的設(shè)計(jì)者考慮問題方式的不同。
ARM架構(gòu)是一個(gè)32位精簡(jiǎn)指令集RISC(Reduced Instruction Set Computing)處理器架構(gòu),其廣泛地使用在許多嵌入式系統(tǒng)設(shè)計(jì)。但在其他領(lǐng)域上也有很多作為,由于節(jié)能的特點(diǎn),ARM處理器非常適用于移動(dòng)通信領(lǐng)域,匹配其主要設(shè)計(jì)目標(biāo)為低成本、高性能、低耗電的特性。
ARM的優(yōu)勢(shì)不在于性能強(qiáng)大而在于效率,ARM采用RISC流水線指令集,在完成綜合性工作方面根本就處于劣勢(shì),而在一些任務(wù)相對(duì)固定的應(yīng)用場(chǎng)合其優(yōu)勢(shì)就能發(fā)揮得淋漓盡致。ARM結(jié)構(gòu)的電腦是通過專用的數(shù)據(jù)接口使CPU與數(shù)據(jù)存儲(chǔ)設(shè)備進(jìn)行連接,所以ARM的存儲(chǔ)、內(nèi)存等性能擴(kuò)展難以進(jìn)行(一般在產(chǎn)品設(shè)計(jì)時(shí)已經(jīng)定好其內(nèi)存及數(shù)據(jù)存儲(chǔ)的容量),所以采用ARM結(jié)構(gòu)的系統(tǒng),一般不考慮擴(kuò)展?;痉钚小皦蛴镁秃谩钡脑瓌t。
x86 架構(gòu)是一個(gè)復(fù)雜指令集CISC(Complex Instruction Set Computer)處理器架構(gòu)。X86結(jié)構(gòu)的電腦無論如何都比ARM結(jié)構(gòu)的系統(tǒng)在性能方面要快得多、強(qiáng)得多。X86的CPU隨便就是1G以上、雙核、四核。X86結(jié)構(gòu)的電腦采用“橋”的方式與擴(kuò)展設(shè)備(如:硬盤、內(nèi)存等)進(jìn)行連接,而且x86結(jié)構(gòu)的電腦出現(xiàn)了近30年,其配套擴(kuò)展的設(shè)備種類多、價(jià)格也比較便宜,所以x86結(jié)構(gòu)的電腦能很容易進(jìn)行性能擴(kuò)展,如增加內(nèi)存、硬盤等。
網(wǎng)頁(yè)標(biāo)題:android架構(gòu),android架構(gòu)圖
標(biāo)題鏈接:http://jinyejixie.com/article10/dsedego.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、網(wǎng)站導(dǎo)航、Google、企業(yè)網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)