Android開(kāi)發(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):

目前創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、虹口網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
在Android系統(tǒng)上,每一個(gè)CPU架構(gòu)對(duì)應(yīng)一個(gè)ABI:
ABI是Application Binary Interface的縮寫(xiě),常表示兩個(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,它們之間的差距都非常大。但是如果從最基本的邏輯角度來(lái)分類(lèi)的話,它們可以被分為兩大類(lèi),即所謂的“復(fù)雜指令集(CISC)”與“精簡(jiǎn)指令集(RISC)”系統(tǒng)。
Intel和ARM處理器的第一個(gè)區(qū)別是,前者使用復(fù)雜指令集(CISC),后者使用精簡(jiǎn)指令集(RISC)。屬于這兩種類(lèi)中的各種架構(gòu)之間最大的區(qū)別,在于它們的設(shè)計(jì)者考慮問(wèn)題方式的不同。
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)的電腦是通過(guò)專(zhuān)用的數(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ò)展。基本奉行“夠用就好”的原則。
x86 架構(gòu)是一個(gè)復(fù)雜指令集CISC(Complex Instruction Set Computer)處理器架構(gòu)。X86結(jié)構(gòu)的電腦無(wú)論如何都比ARM結(jié)構(gòu)的系統(tǒng)在性能方面要快得多、強(qiáng)得多。X86的CPU隨便就是1G以上、雙核、四核。X86結(jié)構(gòu)的電腦采用“橋”的方式與擴(kuò)展設(shè)備(如:硬盤(pán)、內(nèi)存等)進(jìn)行連接,而且x86結(jié)構(gòu)的電腦出現(xiàn)了近30年,其配套擴(kuò)展的設(shè)備種類(lèi)多、價(jià)格也比較便宜,所以x86結(jié)構(gòu)的電腦能很容易進(jìn)行性能擴(kuò)展,如增加內(nèi)存、硬盤(pán)等。
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電話(依賴于硬件)。
8. 藍(lán)牙(Bluetooth)、EDGE、3G、WiFi(依賴于硬件)。
9. 照相機(jī)、GPS、指南針和加速度計(jì)(依賴于硬件)。
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客戶端、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ī)制使得組件可以被用戶替換。
以下所有的應(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)欄中顯示客戶通知信息。
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ī)依賴于Linux的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。
5. Linux內(nèi)核
Android的核心系統(tǒng)服務(wù)依賴于Linux內(nèi)核,如安全性、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的硬件抽象層。
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ǒng)分為四部分,從高到低分別是:
1、Android應(yīng)用層
2、Android應(yīng)用框架層
3、Android系統(tǒng)運(yùn)行層
4、Linux內(nèi)核層
Android系統(tǒng)構(gòu)架主要應(yīng)用于ARM平臺(tái),但不僅限于ARM,通過(guò)編譯控制,在X86、MAC等體系結(jié)構(gòu)的機(jī)器上同樣可以運(yùn)行。
擴(kuò)展資料:
Android運(yùn)行庫(kù)
Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了JAVA編程語(yǔ)言核心庫(kù)的大多數(shù)功能。
每一個(gè)Android都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。Dalvik虛擬機(jī)執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做了優(yōu)化。
同時(shí)虛擬機(jī)是基于寄存器的,所有的類(lèi)都經(jīng)由JAVA編譯器編譯,然后通過(guò)SDK中的“dx”工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。
參考資料:百度百科-Android系統(tǒng)構(gòu)架
標(biāo)題名稱(chēng):android平臺(tái)架構(gòu),android平臺(tái)架構(gòu)的四個(gè)層次作用
URL地址:http://chinadenli.net/article48/dsgepep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、建站公司、網(wǎng)站建設(shè)、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、定制開(kāi)發(fā)
聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)