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)核層。
我們提供的服務(wù)有:網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、肇州ssl等。為近千家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的肇州網(wǎng)站制作公司
Android系統(tǒng)構(gòu)架主要應(yīng)用于ARM平臺(tái),但不僅限于ARM,通過(guò)編譯控制,在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客戶(hù)端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。它們一般都是使用Java進(jìn)行編寫(xiě)。
2.應(yīng)用框架層
開(kāi)發(fā)人員也可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶(hù)可以方便的替換程序組件。
android應(yīng)用開(kāi)發(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é)過(guò)計(jì)算機(jī)網(wǎng)絡(luò)知道OSI/RM,就會(huì)知道分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。也就是說(shuō)各層各盡其職,各層提供固定的SAP(ServiceAccessPoint),專(zhuān)業(yè)點(diǎn)可以說(shuō)是高內(nèi)聚、低耦合。如果你只是做應(yīng)用開(kāi)發(fā),就不需要深入了解LinuxKernel層。2、AndroidRuntimeAndroid包含一個(gè)核心庫(kù)的集合,提供大部分在Java編程語(yǔ)言核心類(lèi)庫(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格式是專(zhuān)為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ī)依賴(lài)于Linux內(nèi)核提供基本功能,如線程和底層內(nèi)存管理。3、LibrariesAndroid包含一個(gè)C/C++庫(kù)的集合,供Android系統(tǒng)的各個(gè)組件使用。這些功能通過(guò)Android的應(yīng)用程序框架(applicationframework)暴露給開(kāi)發(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界面管理--管理訪問(wèn)顯示子系統(tǒng)和無(wú)縫組合多個(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通過(guò)提供開(kāi)放的開(kāi)發(fā)平臺(tái),Android使開(kāi)發(fā)者能夠編制極其豐富和新穎的應(yīng)用程序。開(kāi)發(fā)者可以自由地利用設(shè)備硬件優(yōu)勢(shì)、訪問(wèn)位置信息、運(yùn)行后臺(tái)服務(wù)、設(shè)置鬧鐘、向狀態(tài)欄添加通知等等,很多很多。開(kāi)發(fā)者可以完全使用核心應(yīng)用程序所使用的框架APIs。應(yīng)用程序的體系結(jié)構(gòu)旨在簡(jiǎn)化組件的重用,任何應(yīng)用程序都能發(fā)布他的功能且任何其他應(yīng)用程序可以使用這些功能(需要服從框架執(zhí)行的安全限制)。這一機(jī)制允許用戶(hù)替換組件。所有的應(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)用程序能訪問(wèn)其他應(yīng)用程序(如通訊錄)的數(shù)據(jù),或共享自己的數(shù)據(jù)資源管理器(ResourceManager)--提供訪問(wèn)非代碼資源,如本地化字符串、圖形和布局文件通知管理器(NotificationManager)--使所有的應(yīng)用程序能夠在狀態(tài)欄顯示自定義警告活動(dòng)管理器(ActivityManager)--管理應(yīng)用程序生命周期,提供通用的導(dǎo)航回退功能5、ApplicationsAndroid裝配一個(gè)核心應(yīng)用程序集合,包括電子郵件客戶(hù)端、SMS程序、日歷、地圖、瀏覽器、聯(lián)系人和其他設(shè)置。所有應(yīng)用程序都是用Java編程語(yǔ)言寫(xiě)的。更加豐富的應(yīng)用程序有待我們?nèi)ラ_(kāi)發(fā)!從上面我們知道Android的架構(gòu)是分層的,非常清晰,分工很明確。Android本身是一套軟件堆迭(SoftwareStack),或稱(chēng)為「軟件迭層架構(gòu)」,迭層主要分成三層:操作系統(tǒng)、中間件、應(yīng)用程序。從上面我們也看到了開(kāi)源的力量,一個(gè)個(gè)熟悉的開(kāi)源軟件在這里貢獻(xiàn)了自己的一份力量。
開(kāi)發(fā)一個(gè)程序,android的系統(tǒng)框架是層層相扣,不能分開(kāi)的。
應(yīng)用程序?qū)樱?/p>
這個(gè)層主要指的就是用java語(yǔ)言編寫(xiě)的運(yùn)行在虛擬機(jī)上的程序,Google在最開(kāi)始時(shí)就 在android系統(tǒng)中捆綁了一些核心的應(yīng)用(核心應(yīng)用的編寫(xiě)必須使用應(yīng)用層序框架層的API框架),例如你android手機(jī)中SMS發(fā)送短消息的程序,通訊錄等等。
應(yīng)用程序框架層:
指的就是開(kāi)發(fā)時(shí)所需要的API框架,開(kāi)發(fā)人員是在遵守該框架的原則上,調(diào)用他們的,開(kāi)發(fā)自己所需要的程序。
系統(tǒng)運(yùn)行庫(kù)層:
用于支持應(yīng)用框架層的各個(gè)組件的。就是說(shuō)當(dāng)開(kāi)發(fā)人員使用android應(yīng)用框架層時(shí),android系統(tǒng)會(huì)通過(guò)一些C/C++庫(kù)來(lái)支持對(duì)我們使用的各個(gè)組件,使其能更好地為開(kāi)發(fā)者服務(wù)。
linux核心層:
android的核心系統(tǒng)服務(wù)如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型等都依賴(lài)于Linux2.6內(nèi)核,Linux內(nèi)核同時(shí)也作為硬件和軟件棧之間的抽象層。
因此,你開(kāi)發(fā)的程序是運(yùn)行在應(yīng)用程序?qū)樱_(kāi)發(fā)中寫(xiě)代碼調(diào)用的包,是基于應(yīng)用框架層,而在應(yīng)用框架中的各個(gè)組件是需要系統(tǒng)運(yùn)行庫(kù)的支持的,例如,你要登陸查看的信息就必須訪問(wèn)到SQLite數(shù)據(jù)庫(kù),SQLite就位于系統(tǒng)運(yùn)行庫(kù),再有,你登入要輸入信息,肯定需要鍵盤(pán)驅(qū)動(dòng)的支持,而各種驅(qū)動(dòng)是依賴(lài)Linux內(nèi)核的。
android系統(tǒng)架構(gòu)分從下往上為linux 內(nèi)核層、運(yùn)行庫(kù)、應(yīng)用程序框架層、和應(yīng)用程序?qū)?/p>
linuxkernel:負(fù)責(zé)硬件的驅(qū)動(dòng)程序、網(wǎng)絡(luò)、電源、系統(tǒng)安全以及內(nèi)存管理等功能。
libraries和 androidruntime:libraries:即c/c++函數(shù)庫(kù)部分,大多數(shù)都是開(kāi)放源代碼的函數(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)然也包括支持游戲開(kāi)發(fā)2dsgl和 3dopengles,在多媒體方面有mediaframework框架來(lái)支持各種影音和圖形文件的播放與顯示,例如mpeg4、h.264、mp3、 aac、amr、jpg和png等眾多的多媒體文件格式。android的runtime負(fù)責(zé)解釋和執(zhí)行生成的dalvik格式的字節(jié)碼。
applicationframework(應(yīng)用軟件架構(gòu)),java應(yīng)用程序開(kāi)發(fā)人員主要是使用該層封裝好的api進(jìn)行快速開(kāi)發(fā)。
applications:該層是java的應(yīng)用程序?qū)樱琣ndroid內(nèi)置的googlemaps、e-mail、即時(shí)通信工具、瀏覽器、mp3播放 器等處于該層,java開(kāi)發(fā)人員開(kāi)發(fā)的程序也處于該層,而且和內(nèi)置的應(yīng)用程序具有平等的位置,可以調(diào)用內(nèi)置的應(yīng)用程序,也可以替換內(nèi)置的應(yīng)用程序。
上面的四個(gè)層次,下層為上層服務(wù),上層需要下層的支持,調(diào)用下層的服務(wù),這種嚴(yán)格分層的方式帶來(lái)的極大的穩(wěn)定性、靈活性和可擴(kuò)展性,使得不同層的開(kāi)發(fā)人員可以按照規(guī)范專(zhuān)心特定層的開(kāi)發(fā)。
android應(yīng)用程序使用框架的api并在框架下運(yùn)行,這就帶來(lái)了程序開(kāi)發(fā)的高度一致性,另一方面也告訴我們,要想寫(xiě)出優(yōu)質(zhì)高效的程序就必須對(duì)整個(gè) applicationframework進(jìn)行非常深入的理解。精通applicationframework,你就可以真正的理解android的設(shè)計(jì) 和運(yùn)行機(jī)制,也就更能夠駕馭整個(gè)應(yīng)用層的開(kāi)發(fā)。
Android平臺(tái)采用了整合的策略思想,包括底層Linux操作系統(tǒng)、中間層的中間件和上層的Java應(yīng)用程序。下面我把Android的特性及其架構(gòu)體系結(jié)構(gòu)總結(jié)一下。
一、Android的平臺(tái)特性
Android平臺(tái)有如下特性:
1. 應(yīng)用程序框架支持組件的重用與替換。
這樣我們可以把系統(tǒng)中不喜歡的應(yīng)用程序刪除,安裝我們喜歡的應(yīng)用程序。
2. Dalvik虛擬機(jī)專(zhuān)門(mén)為移動(dòng)設(shè)備進(jìn)行了優(yōu)化。
Android應(yīng)用程序?qū)⒂蒍ava編寫(xiě)、編譯的類(lèi)文件通過(guò)DX工具轉(zhuǎn)換成一種后綴名為.dex的文件來(lái)執(zhí)行。Dalvik虛擬機(jī)是基于寄存器的,相對(duì)于Java虛擬機(jī)速度要快很多。
3. 內(nèi)部集成瀏覽器基于開(kāi)源的WebKit引擎。
有了內(nèi)置的瀏覽器,這將意味著WAP應(yīng)用的時(shí)代即將結(jié)束,真正的移動(dòng)互聯(lián)網(wǎng)時(shí)代已經(jīng)來(lái)臨,手機(jī)就是一臺(tái)“小電腦”,可以在網(wǎng)上隨意遨游。
4. 優(yōu)化的圖形庫(kù)包括2D和3D圖形庫(kù),3D圖形庫(kù)基于OpenGL ES 1.0。
強(qiáng)大的圖形庫(kù)給游戲開(kāi)發(fā)帶來(lái)福音。在3G最為重要的的應(yīng)用莫過(guò)于手機(jī)上網(wǎng)和手機(jī)游戲。
5. SQLite用作結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)。
6. 多媒體支持包括常見(jiàn)的音頻、視頻和靜態(tài)印象文件格式
如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。
7. GSM電話(huà)(依賴(lài)于硬件)。
8. 藍(lán)牙(Bluetooth)、EDGE、3G、WiFi(依賴(lài)于硬件)。
9. 照相機(jī)、GPS、指南針和加速度計(jì)(依賴(lài)于硬件)。
10. 豐富的開(kāi)發(fā)環(huán)境包括設(shè)備模擬器、調(diào)試工具、內(nèi)存及性能分析圖表和Eclipse集成的開(kāi)發(fā)環(huán)境插件。
Google提供了Android開(kāi)發(fā)包SDK,其中包含了大量的類(lèi)庫(kù)和開(kāi)發(fā)工具,并且針對(duì)Eclipse的可視化開(kāi)發(fā)插件ADT。
二、Android平臺(tái)架構(gòu)
從上圖我們可以看出,Android操作系統(tǒng)的體系結(jié)構(gòu)可分為4層,由上到下依次是應(yīng)用程序、應(yīng)用程序框架、核心類(lèi)庫(kù)和Linux內(nèi)核,其中第三層還包括Android運(yùn)行時(shí)的環(huán)境。下面分別來(lái)講解各個(gè)部分。
1. 程序應(yīng)用
Android
連同一個(gè)核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括E-mail客戶(hù)端、SMS短消息程序、日歷、地圖、瀏覽器、聯(lián)系人管理程序等。所有的應(yīng)用程序都是用Java編寫(xiě)的。
2. 應(yīng)用程序框架
開(kāi)發(fā)者完全可以訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序框架架構(gòu)用來(lái)簡(jiǎn)化組件軟件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。該應(yīng)用程序重用機(jī)制使得組件可以被用戶(hù)替換。
以下所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:
1)一個(gè)可擴(kuò)展的視圖(Views)可以用來(lái)創(chuàng)建應(yīng)用程序,包括列表(lists)、網(wǎng)絡(luò)(grids)、文本框(text
boxes)、按鈕(buttons),甚至是一個(gè)可嵌入的Web瀏覽器。
2)內(nèi)容管理器(Content Providers)使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)。
3)一個(gè)資源管理器(Resource Manager)提供非代碼資源的訪問(wèn),如本地字符串、圖形和分層文件(layout files)。
4)一個(gè)通知管理器(Notification Manager)使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶(hù)通知信息。
5)一個(gè)活動(dòng)類(lèi)管理器(Activity Manager)用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。
3. Android程序庫(kù)
Android包括一個(gè)被Android系統(tǒng)中各種不同組件所使用的C/C++集庫(kù)。該庫(kù)通過(guò)Android應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。
以下是一些主要的核心庫(kù):
1)系統(tǒng)C庫(kù):一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc),專(zhuān)門(mén)為基于Embedded Linux的設(shè)備定制。
2)媒體庫(kù):基于PacketVideo
OpenCORE;該庫(kù)支持錄放,并且可以錄制許多流行的音頻視頻格式,還有靜態(tài)映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。
3)Surface Manager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合。
4)LibWebCore:一個(gè)最新的Web瀏覽器引擎,用來(lái)支持Android瀏覽器和一個(gè)可嵌入的Web視圖。
5)SGL:一個(gè)內(nèi)置的2D圖形引擎。
6)3D libraries:基于OpenGL ES 1.0 APIs實(shí)現(xiàn);該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。
7)FreeType:位圖(bitmap)和向量(vector)字體顯示。
8)SQLite:一個(gè)對(duì)于所以應(yīng)用程序可用、功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。
4. Android運(yùn)行庫(kù)
Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了Java編程語(yǔ)言核心庫(kù)的大多數(shù)功能。
每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik是針對(duì)同時(shí)高效地運(yùn)行多個(gè)VMs實(shí)現(xiàn)的。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件,該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的,所有的類(lèi)都是經(jīng)由Java匯編器編譯,然后通過(guò)SDK中的DX工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。
Dalvik虛擬機(jī)依賴(lài)于Linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。
5. Linux內(nèi)核
Android的核心系統(tǒng)服務(wù)依賴(lài)于Linux內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的硬件抽象層。
網(wǎng)站標(biāo)題:android項(xiàng)目架構(gòu),安卓開(kāi)發(fā) 架構(gòu)
網(wǎng)頁(yè)網(wǎng)址:http://vcdvsql.cn/article32/dsdeesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、標(biāo)簽優(yōu)化、網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)