Android框架

查志強發表於2014-07-11

【原文:http://www.csdn123.com/html/itweb/20130823/77534_77545_77532.htm

  PS:小蝦米大學剛畢業,現在是一個android應用開發者。從實習期的一竅不通到現在能寫簡單的應用,期間的酸甜苦辣也只有自己知道。由於一

直在公司做專案時邊學邊寫,最近總感覺好像什麼都會點但是什麼又都不怎麼記得,可能是缺少體系的學習再加上本人記憶力比較差,所以我決定

在這裡好好的系統的再次學習android,打好紮實的基礎才是騰飛的關鍵。本文許多地方是貼上的其他地方的內容,純粹只為記錄自己向別人學習

的過程


 

一.  框架(FrameWork)

1.什麼是框架?
  框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件例項間互動的方法;另一種定義認為,框架是可被應用開發者定製

的應用骨架。前者是從應用方面而後者是從目的方面給出的定義。

  框架,即framework。其實就是某種應用的半成品,就是一組元件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。

而且,框架一般是成熟的,不斷升級的軟體。 android框架就像一個舞臺,它提供場地,燈光和音響等各種元件,讓你開發的應用在舞臺上翩翩起

舞。

 

2.使用框架的優點

  • 領域內的軟體結構一致性好; 建立更加開放的系統;
  • 重用程式碼大大增加,軟體生產效率和質量也得到了提高;
  • 軟體設計人員要專注於對領域的瞭解,使需求分析更充分;
  • 儲存了經驗,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限於低層程式設計;
  • 允許採用快速原型技術;
  • 有利於在一個專案內多人協同工作;
  • 大粒度的重用使得平均開發費用降低,開發速度加快,開發人員減少,維護費用降低,而引數化框架使得適應性、靈活性增強。

 

二.  Android框架
1.Andorid框架圖

 

                  圖1.1 Android框架圖

如圖1.1,整個Android框架可分為5個部分,從底層到上依次為:linux核心層(Linux Kernel),庫(Libraries),Android執行環境(Android Runtime

),應用框架層(Application Framework),應用層(Applications)。

 

2.各層簡介
2.1  linux核心層(Linux Kernel):Android基於Linux 2.6提供核心系統服務,例如:安全、記憶體管理、程式管理、網路堆疊、驅動模型。Linux Kernel

也作為硬體和軟體之間的抽象層,它隱藏具體硬體細節而為上層提供統一的服務。如果你學過計算機網路知道OSI/RM((Open System

Interconnection/Reference Model)——開放系統互連參考模型,1983年ISO頒佈的網路體系結構標準。從低到高分七層:物理層、資料鏈路層、網路

層、傳輸層、會話層、表示層、應用層。各層之間相對獨立,第N層向N+1層提供服務。),就會知道分層的好處就是使用下層提供的服務而為上層

提供統一的服務,遮蔽本層及以下層的差異,當本層及以下層發生了變化不會影響到上層。也就是說各層各司其職,各層提供固定的SAP(Service

Access Point),專業點可以說是高內聚、低耦合。
  Android使用Linux2.6作為作業系統,Linux2.6是一種標準的技術,Linux也是一個開放的作業系統。Android對作業系統的使用包括核心和驅動程式兩

部分,Android的Linux核心為標準的Linux2.6核心,Android更多的是需要一些與移動裝置相關的驅動程式。主要的驅動如下所示:

  • 顯示驅動(Display Driver)——常用基於Linux的幀緩衝(Frame Buffer)驅動。
  • 照相機驅動(Camera Driver)——常用基於Linux的v4l(Video for)驅動。
  • 藍芽驅動(Bluetooth Driver)
  • M-systems Driver
  • Binder IPC驅動——Andoid一個特殊的驅動程式,具有單獨的裝置節點,提供程式間通訊的功能。
  • 鍵盤驅動(KeyBoard Driver)
  • USB驅動(USB Driver)
  • WiFi驅動(WiFi Driver)——基於IEEE 802.11標準的驅動程式
  • 音訊驅動(Audio Driver)——常用基於ALSA(Advanced Linux Sound Architecture,高階Linux聲音體系)驅動。
  • 電源管理(Power Manager)


2.2  庫(Libraries):Android包含一個C/C++庫的集合,供Android系統的各個元件使用。這些功能通過Android的應用程式框架(application framework

)暴露給開發者。下面列出一些核心庫:

  • 介面管理(Suface Manager)——管理訪問顯示子系統和無縫組合多個應用程式的二維和三維圖形層;
  • 多媒體框架(Media Framework)——基於PacketVideo的OpenCORE。這些庫支援播放和錄製許多流行的音訊和視訊格式,以及靜態影象檔案,包括MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG;從功能上本庫一共分為兩大部分,一個部分是音訊、視訊的回放(PlayBack),另一部分是則是音視訊的紀錄(Recorder)。
  • SQlite——所有應用程式都可以使用的強大而輕量級嵌入式的關聯式資料庫引擎;
  • 圖形處理3D庫(OpenGL|ES)——本部分提供了對3D的支援,基於OpenGL ES 1.0 APIs的實現。庫使用硬體3D加速或包含高度優化的3D軟體光柵
  • 字型引擎(FreeType)——點陣圖和向量字型渲染
  • 瀏覽器(WebKit)——網路瀏覽器的核心
  • SGL——2D影象引擎
  • 安全套接層(SSL)——即Secure Socket Layer位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。
  • C庫——C語言的標準庫,這也是系統中一個最為底層的庫,C庫是通過Linux的系統呼叫來實現

 

2.3  Andorid執行環境(Android Runtime):包含了一組核心庫(Core Libraries)和Dalvik虛擬機器(Dalvik Vitual Machine)

  • 核心庫(Core Libraries)——提供大部分在Java程式語言核心類庫中可用的功能。
  • Dalvik虛擬機器(Dalvik Vitual Machine)——每一個Android應用程式是Dalvik虛擬機器中的例項,執行在他們自己 的程式中。Dalvik虛擬機器設計成,在一個裝置可以高效地執行多個虛擬機器。Dalvik虛擬機器可執行檔案格式是.dex,dex格式是專為Dalvik 設計的一種壓縮格式,適合記憶體和處理器速度有限的系統。大多數虛擬機器包括JVM都是基於棧的,而Dalvik虛擬機器則是基於暫存器的。 兩種架構各有優劣,一般而言,基於棧的機器需要更多指令,而基於暫存器的機器指令更大。dx 是一套工具,可以將 Java .class 轉換成 .dex 格式。一個dex檔案通常會有多個.class。由於dex有時必須進行最佳化,會使檔案大小增加1-4倍,以ODEX結尾。Dalvik虛擬機器依賴於Linux 核心提供基本功能,如執行緒和底層記憶體管理。

 
 
 
2.4  應用框架層(Application Framework):Android的應用程式框架為應用程式層的開發者提供APIs,它實際上是一個應用程式的框架,應用程式的體

繫結構旨在簡化元件的重用,任何應用程式都能釋出他的功能且任何其他應用程式可以使用這些功能(需要服從框架執行的安全限制)。這一機制

允許使用者替換元件。。由於上層的應用程式是以JAVA構建的,因此本層次提供的首先包含了UI程式中所需要的各種控制元件:例如: Views (檢視元件)

包括 lists(列表), grids(柵格), text boxes(文字框), buttons(按鈕)等。甚至一個嵌入式的Web瀏覽器。

  • 活動管理器(Activity Manager)——管理應用程式生命週期,提供通用的導航回退功能
  • 視窗管理器(Window Manager)——管理view在螢幕端的顯示
  • 內容提供者(Content Providers)——使應用程式能訪問其他應用程式(如通訊錄)的資料,或共享自己的資料
  • 檢視系統(View Systems)——豐富的、可擴充套件的檢視集合,可用於構建一個應用程式。包括包括列表、網格、文字框、按鈕,甚至是內嵌的網頁瀏
  • 覽器
  • 通知管理器(Notification Manager)——使所有的應用程式能夠在狀態列顯示自定義警告
  • 包管理器(Package Manager)——描述了當前安裝在裝置上的app包的大量相關資訊
  • 電話管理器(Telephony Manager)——提供使用電話服務
  • 資源管理器(Resource Manager)——提供訪問非程式碼資源,如本地化字串、圖形和佈局檔案
  • 定位管理器(Location Manager)——獲取地理位置等相關資訊
  • XMPP Service——是一種以XML為基礎的開放式實時通訊協定

 

2.5  應用層(Applications):Android的應用程式主要是使用者介面(User Interface)方面的,通常以JAVA程式編寫,其中還可以包含各種資原始檔(

放置在res目錄中)JAVA程式及相關資源經過編譯後,將生成一個APK包。Android本身提供了主螢幕(Home),聯絡人(Contact),電話(Phone

),瀏覽器(Browers)等眾多的核心應用。同時應用程式的開發者還可以使用應用程式框架層的API實現自己的程式。這也是Android開源的巨大潛

力的體現。


3. 總結
  Android的架構是分層的,非常清晰,分工很明確。Android本身是一套軟體堆疊(Software Stack),或稱為「軟體疊層架構」,疊層主要分成三層:

作業系統、中介軟體、應用程式。


相關文章