Android架構簡要介紹,android簡要介紹
1. Android架構直觀圖
展示了Android系統的主要組成部分:
整體上而言,Android系統結構由5個部分組成,從上到下,別人是Applications (Android應用程式層)、ApplicationFramework (Android應用程式架構層)、Libraries、Android Runtime (Anroid運行時)、Linux Kernel (Linux核心)。其中,Libraries和Android Runtime處於Android架構的同一層。下面簡要介紹這5個部分。
2. Applications層
Android裝配的一個核心應用程式集合,包括電子郵件用戶端、SMS應用程式、日曆、地圖、瀏覽器、連絡人和其他設定。所有應用程式,不管是使用者開發的,還是系統內建的應用程式都在該層。
3. Application Framework層
Android應用程式的架構層,所有的應用程式都是在該架構的基礎上開發出來的。該架構通過提供開放的開發平台,使開發人員能夠編製出極其豐富和新穎的應用程式。例如,開發人員可以自由地利用裝置硬體優勢、訪問位置資訊、運行後台服務、設定鬧鐘、向狀態列中添加通知等。同時,開發人員可以利用核心應用程式所使用的架構APIs。此外,由於應用程式的體繫結構旨在簡化組件的重用,任何應用程式都能發布它的功能且任何其他的應用程式都能使用這些功能,同時這一機制還允許使用者替換Android的組件。
實際上,所有應用程式是一組服務和系統,它們包括:
● 視圖(View): 豐富的、可擴充的視圖集合,用於構建一個應用程式,包括列表、網路、文字框、按鈕,以及內嵌的網頁瀏覽器。
● 內容提供者(ContentProviders): 使應用程式能夠訪問其他應用程式的資料,或者共用自己的資料。
● 資源管理員(Resource Manager): 使應用程式能夠訪問非代碼資源。如本地化字串、圖形映像,以及介面布局檔案。
● 通知管理器(Notification Manager): 使所有的應用程式能夠在狀態列顯示自訂的警告。
● Active Manager(Activity Manager): 管理應用程式的生命週期,提供通用的導航回退功能。
4. Libraries層
Android包含一個C/C++庫的集合,供Android系統的各個組件使用。這些功能通過Android的應用程式架構(application framework)暴露給開發人員。下面列出一些核心庫:
● 系統C庫: 標準C系統庫(libc)的BSD衍生,調整為基於嵌入式Linux裝置
● 媒體庫: 基於PacketVideo的OpenCORE。這些庫支援播放和錄製許多流行的音頻和視頻格式,以及靜態影像檔,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG
● 介面管理: 管理訪問顯示子系統和無縫組合多個應用程式的二維和三維圖形層
● LibWebCore: 新式的Web瀏覽器引擎,驅動Android 瀏覽器和內嵌的web視圖
● SGL: 基本的2D圖形引擎
● 3D庫: 基於OpenGL ES 1.0 APIs的實現。庫使用硬體3D加速或包含高度最佳化的3D軟體光柵
● FreeType: 位元影像和向量字型渲染
● SQLite: 所有應用程式都可以使用的強大而輕量級的關聯式資料庫引擎
5. Android Runtime 層
Android 包含一個核心庫的集合,提供大部分在Java程式設計語言核心類庫中可用的功能。每一個Android應用程式是Dalvik虛擬機器中的執行個體,運行在他們自己的進程中。Dalvik虛擬機器設計成,在一個裝置中可以高效地運行多個虛擬機器。Dalvik虛擬機器可執行檔格式是.dex,dex格式是專為Dalvik 設計的一種壓縮格式,適合記憶體和處理器速度有限的系統。
大多數虛擬機器包括JVM都是基於棧的,而Dalvik虛擬機器則是基於寄存器的。兩種架構各有優劣,一般而言,基於棧的機器需要更多指令,而基於寄存器的機器指令更大。dx 是一套工具,可以將Java.class 轉換成 .dex 格式。一個dex檔案通常會有多個.class。Dalvik虛擬機器依賴於Linux核心提供準系統,如線程和底層記憶體管理。
6.Linux Kernel層
Android基於Linux 2.6提供核心系統服務,例如:安全、記憶體管理、進程管理、網路堆棧、驅動模型。Linux Kernel也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。
如果你學過電腦網路知道OSI/RM,就會知道分層的好處就是使用下層提供的服務而為上層提供統一的服務,屏蔽本層及以下層的差異,當本層及以下層發生了變化不會影響到上層。也就是說各層各司其職,各層提供固定的SAP(Service Access Point),專業點可以說是高內聚、低耦合。