Android系統(tǒng)架構(gòu)解析_第1頁
Android系統(tǒng)架構(gòu)解析_第2頁
Android系統(tǒng)架構(gòu)解析_第3頁
Android系統(tǒng)架構(gòu)解析_第4頁
Android系統(tǒng)架構(gòu)解析_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Android系統(tǒng)架構(gòu)解析Android系統(tǒng)架構(gòu)圖:一.Android系統(tǒng)架構(gòu)詳解:Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從架構(gòu)圖看,android分為四個層,從高層到低層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和linux核心層。Android應(yīng)用程序(Applications)Android會同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。Android應(yīng)用程序框架(ApplicationFramework)開發(fā)人員可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計簡化了組件的重用;任何一個應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。隱藏在每個應(yīng)用后面的是一系列的服務(wù)和系統(tǒng),其中包括:*豐富而又可擴(kuò)展的視圖(Views):可以用來構(gòu)建應(yīng)用程序,它包括列表(lists),網(wǎng)格(grids),文本框(textboxes),按鈕(buttons),甚至可嵌入的web瀏覽器。*內(nèi)容提供器(ContentProviders):使得應(yīng)用程序可以訪問另一^應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)。*資源管理器(ResourceManager):提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(layoutfiles)。*通知管理器(NotificationManager):使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。*活動管理器(ActivityManager):用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。Android系統(tǒng)運行庫(Libraries,AndroidRuntime)Android程序庫Android包含一些C/C++庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫:*系統(tǒng)C庫:一個從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(libc),它是專門為基于embeddedlinux的設(shè)備定制的。*媒體庫:基于PacketVideoOpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時支持靜態(tài)圖像文件。編碼格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。SurfaceManager:對顯示子系統(tǒng)的管理,并且為多個應(yīng)用程序提供了2D和3D圖層的無縫融合。LibWebCore:一個最新的web瀏覽器引擎用,支持Android瀏覽器和一個可嵌入的web視圖。SGL:底層的2D圖形引擎。3Dlibraries:基于OpenGLES1.0APIs實現(xiàn);該庫可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。FreeType:位圖(bitmap)和矢量(vector)字體顯示。SQLite:一個對于所有應(yīng)用程序可用功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫引擎。Android運行庫Android包含一個核心庫的集合,提供大部分在Java編程語言核心類庫中可用的功能。每一個Android應(yīng)用程序是Dalvik虛擬機(jī)中的實例,運行在他們自己的進(jìn)程中。Dalvik虛擬機(jī)設(shè)計成一^設(shè)備可以高效地運行多個虛擬機(jī)。Dalvik虛擬機(jī)可執(zhí)行文件格式是(.dex),dex格式是專為Dalvik設(shè)計的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng)。大多數(shù)虛擬機(jī)包括JVM都是基于棧的,而Dalvik虛擬機(jī)則是基于寄存器的。同時虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由JAVA編譯器編譯,然后通過SDK中的"dx"工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。兩種架構(gòu)各有優(yōu)劣,一般而言,基于棧的機(jī)器需要更多指令,而基于寄存器的機(jī)器指令更大。dx是一套工具,可以將Java.class轉(zhuǎn)換成.dex格式。一個dex文件通常會有多個.class。由于dex有時必須進(jìn)行最佳化,會使文件大小增加1-4倍,以O(shè)DEX結(jié)尾。Dalvik虛擬機(jī)依賴于linux內(nèi)核的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。Linux內(nèi)核(LinuxKernel)Android的核心系統(tǒng)服務(wù)依賴于Linux2.6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。Linux內(nèi)核也同時作為硬件和軟件棧之間的抽象層。Linux內(nèi)核隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。如果你學(xué)過計算機(jī)網(wǎng)絡(luò)知道OSI/RM,就會知道分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會影響到上層。也就是說各層各盡其職,各層提供固定的SAP(ServiceAccessPoint),專業(yè)點可以說是高內(nèi)聚、低耦合。如果你只是做應(yīng)用開發(fā),就不需要深入了解LinuxKernel層。二.Android應(yīng)用程序框架AndroidFramework框架介紹我們在開發(fā)應(yīng)用時都是通過框架來與Android底層進(jìn)行交互,接觸最多的就是應(yīng)用框架層了。在AndroidSDK中內(nèi)置了一些對象,其中最重要的組件要屬Activities、Intents、Services以及ContentProviders四個組件。什么是應(yīng)用程序框架呢?框架可以說是一個應(yīng)用程序的核心,框架是所有參與開發(fā)的程序員共同使用和遵守的約定,大家在其約定上進(jìn)行必要的擴(kuò)展,但程序始終保持主體結(jié)構(gòu)的一致性。其作用是讓程序保持清晰、一目了然,在滿足不同需求的同時又不互相影響。Activities活動—個活動就是一個用戶界面。一個應(yīng)用程序可以定義一個或多個活動,每個活動都能夠保存和恢復(fù)自身的狀態(tài)。Intents意向Intent是描述一個特定活動的一種機(jī)制,比如“選取照片'、“撥打電話”等這類具體動作。在Android中,所有的東西都是通過Intents完成的,因此開發(fā)者有機(jī)會替代或重用大量的組件。比如有一個“發(fā)送郵件”的intent,當(dāng)你應(yīng)用程序需要發(fā)送郵件時可以激活這個intent。開發(fā)者甚至可以重新編寫一個新的郵件應(yīng)用程序,并注冊為活動以處理這個intent代替標(biāo)準(zhǔn)的郵件應(yīng)用程序。那么其他應(yīng)用程序就可以使用新編寫應(yīng)用程序來發(fā)送郵件了。Services服務(wù)一^服務(wù)Service就是運行在后臺、沒有用戶直接交互的任務(wù),與Unixdaemon類似。比如要做一個音樂播放器,可能會被另一個活動激活,但音樂是需要作為背景音樂播放,那么這種程序就可以考慮作為一種服務(wù)Service。然后別的活動可以來操作這個播放器。Android中內(nèi)置了很多服務(wù),可以方便的使用API進(jìn)行訪問。ContentProviders內(nèi)容提供者一個內(nèi)容提供者contentProvider就是由自定義的API封裝讀寫操作的一套數(shù)據(jù)。ContentProvider是不同應(yīng)用程序之間共享全局?jǐn)?shù)據(jù)最好的方式。比如,Google提供了聯(lián)系人的ContentProvider,包括姓名、地址、電話等所有信息在內(nèi)的聯(lián)系方式能夠被所有應(yīng)用程序使用。AndroidFramework的功能介紹Android系統(tǒng)提供給應(yīng)用開發(fā)者的本身就是一個框架,所有的應(yīng)用開發(fā)都必須遵守這個框架的原則。我們在開發(fā)應(yīng)用時就是在這個框架上進(jìn)行擴(kuò)展,下面是Android這個框架的功能介紹:android.content: 包含對各種設(shè)備上的數(shù)據(jù)進(jìn)行訪問和發(fā)布。android.database: 通過內(nèi)容提供者瀏覽和操作數(shù)據(jù)庫。android.graphics: 底層的圖形庫,包含畫布、顏色過濾、點、矩形,可以將其直接繪制到屏幕上。android.location: 定位和相關(guān)服務(wù)的類。android.media: 提供一些類管理多種音頻、視頻的媒體接口。: 提供幫助網(wǎng)絡(luò)訪問的類,超過通常的.*接口。android.os: 提供了系統(tǒng)服務(wù)、消息傳輸和IPC機(jī)制。android.opengl: 提供OpenGL的工具。vider:提供訪問Andro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論