android 體系結構

瓜瓜東西發表於2014-04-15

 ——不積跬步,無以至千里;不積小流,無以成江海

    雖然園子裡關於Android系統架構的文章已經很多了,但是作為自己學習Android的心路歷程,記錄下來是必要的,老鳥就速度飛過吧~

    如果說一個成功男人的背後會有一個默默支援的女人的話,那麼一個優越穩定的平臺背後必有一個成熟的系統架構所支撐著。那麼,Android的系統架構是怎麼樣的呢?從下圖我們可以從整體上有個大致的瞭解(圖片來源網際網路):

                          

    從上圖中可以看出,Android系統架構為四層結構,從上層到下層分別是應用程式層、應用程式框架層、系統執行庫層以及Linux核心層,分別介紹如下:

    1)應用程式層

         Android平臺不僅僅是作業系統,也包含了許多應用程式,諸如SMS簡訊客戶端程式、電話撥號程式、圖片瀏覽器、Web瀏覽器等應用程式。這些應用程式都是       用Java語言編寫的,並且這些應用程式都是可以被開發人員開發的其他應用程式所替換,這點不同於其他手機作業系統固化在系統內部的系統軟體,更加靈活和個    性化。

    2)應用程式框架層

         應用程式框架層是我們從事Android開發的基礎,很多核心應用程式也是通過這一層來實現其核心功能的,該層簡化了元件的重用,開發人員可以直接使用其提    供的元件來進行快速的應用程式開發,也可以通過繼承而實現個性化的擴充。

         a) Activity Manager(活動管理器)

              管理各個應用程式生命週期以及通常的導航回退功能

         b) Window Manager(視窗管理器)

              管理所有的視窗程式

         c)  Content Provider(內容提供器)

              使得不同應用程式之間存取或者分享資料

         d) View System(檢視系統)

              構建應用程式的基本元件

         e) Notification Manager(通告管理器)

              使得應用程式可以在狀態列中顯示自定義的提示資訊

         f) Package Manager(包管理器) 

              Android系統內的程式管理

         g)Telephony Manager(電話管理器)

              管理所有的移動裝置功能

         h)Resource Manager(資源管理器)

              提供應用程式使用的各種非程式碼資源,如本地化字串、圖片、佈局檔案、顏色檔案等

         i)Location Manager(位置管理器)

             提供位置服務

         j)XMPP Service(XMPP服務)

             提供Google Talk服務 

  

    3)系統執行庫層

         從圖中可以看出,系統執行庫層可以分成兩部分,分別是系統庫和Android執行時,分別介紹如下:

         a)系統庫

              系統庫是應用程式框架的支撐,是連線應用程式框架層與Linux核心層的重要紐帶。其主要分為如下幾個:

              Ø  Surface Manager

                  執行多個應用程式時候,負責管理顯示與存取操作間的互動,另外也負責2D繪圖與3D繪圖進行顯示合成。 

     Ø  Media Framework 

                  多媒體庫,基於PacketVideo OpenCore;支援多種常用的音訊、視訊格式錄製和回放,編碼格式包括MPEG4、MP3、H.264、AAC、ARM。

              Ø  SQLite:

                  小型的關係型資料庫引擎 

              Ø  OpenGL|ES

                  根據OpenGL ES 1.0API標準實現的3D繪圖函式庫 

              Ø  FreeType

                  提供點陣字與向量字的描繪與顯示 

              Ø  WebKit

                  一套網頁瀏覽器的軟體引擎

              Ø  SGL

                  底層的2D圖形渲染引擎 

              Ø  SSL

                  在Andorid上通訊過程中實現握手 

              Ø  Libc

             從BSD繼承來的標準C系統函式庫,專門為基於embedded linux的裝置定製

 

         b)Android執行時

             Android應用程式時採用Java語言編寫,程式在Android執行時中執行,其執行時分為核心庫和Dalvik虛擬機器兩部分。

             Ø  核心庫

                 核心庫提供了Java語言API中的大多數功能,同時也包含了Android的一些核心API,如android.os、android.net、android.media等等。

             Ø  Dalvik虛擬機器

                 Android程式不同於J2me程式,每個Android應用程式都有一個專有的程式,並且不是多個程式執行在一個虛擬機器中,而是每個Android程式都有一                個Dalivik虛擬機器的例項,並在該例項中執行。Dalvik虛擬機器是一種基於暫存器的Java虛擬機器,而不是傳統的基於棧的虛擬機器,並進行了記憶體資源使用的優化          以及支援多個虛擬機器的特點。需要注意的是,不同於J2me,Android程式在虛擬機器中執行的並非編譯後的位元組碼,而是通過轉換工具dx將Java位元組碼轉成dex格          式的中間碼。

  

    4)Linux核心層 

        Android是基於Linux2.6核心,其核心繫統服務如安全性、記憶體管理、程式管理、網路協議以及驅動模型都依賴於Linux核心。

    基本上通過以上的學習,在對Android系統架構有了一個大致的瞭解之後,我們也離開始Android的開發之旅更進一步了~

-----------------------------------

     Android的系統架構採用了分層架構的思想,如圖1所示。從上層到底層共包括四層,分別是應用程式程式層、應用框架層、系統庫和Android執行時和Linux核心。

      圖1:Android系統架構圖

      每層功能簡要介紹如下:

      一 應用程式層

      該層提供一些核心應用程式包,例如電子郵件、簡訊、日曆、地圖、瀏覽器和聯絡人管理等。同時,開發者可以利用Java語言設計和編寫屬於自己的應用程式,而這些程式與那些核心應用程式彼此平等、友好共處。

     二 應用程式框架層

     該層是Android應用開發的基礎,開發人員大部分情況是在和她打交道。應用程式框架層包括活動管理器、視窗管理器、內容提供者、檢視系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務十個部分。在Android平臺上,開發人員可以完全訪問核心應用程式所使用的API框架。並且,任何一個應用程式都可以釋出自身的功能模組,而其他應用程式則可以使用這些已釋出的功能模組。基於這樣的重用機制,使用者就可以方便地替換平臺本身的各種應用程式元件。

     三 系統庫和Android執行時

     系統庫包括九個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android執行時包括核心庫和Dalvik虛擬機器,前者既相容了大多數Java語言所需要呼叫的功能函式,又包括了Android的核心庫,比如android.os、android.net、android.media等等。後者是一種基於暫存器的java虛擬機器,Dalvik虛擬機器主要是完成對生命週期的管理、堆疊的管理、執行緒的管理、安全和異常的管理以及垃圾回收等重要功能。

     四 Linux核心

     Android核心系統服務依賴於Linux2.6核心,如安全性、記憶體管理、程式管理、網路協議棧和驅動模型。Linux核心也是作為硬體與軟體棧的抽象層。驅動:顯示驅動、攝像頭驅動、鍵盤驅動、WiFi驅動、Audio驅動、flash記憶體驅動、BinderIPC)驅動、電源管理等。

     總結:

     1 Android的系統架構採用分層架構的思想,架構清晰,層次分明,協同工作。

     2 Android的系統架構不僅從巨集觀上認識了Android系統,同時,也給我們的學習與實踐指明瞭方向。若是從事Android應用開發,那應該研究Android的應用框架層和應用程式層;若是從事Android系統開發,那應該研究Android的系統庫和Android執行時;若是從事Android驅動開發,那應該研究Android的Linux核心。總之,找準切入點,實踐出真知。

標籤: 

android

 

體系結構

 

it

分類: Android

Android <wbr>體系結構介紹

Android作為一個移動裝置的平臺,其軟體層次結構包括了一個作業系統(OS),中介軟體(MiddleWare)和應用程式(Application)。根據Android的軟體框圖,其軟體層次結構自下而上分為以下幾個層次:
第一、作業系統層(OS)
第二、各種庫(Libraries)和Android 執行環境(RunTime)
第三、應用程式框架(Application Framework)
第四、應用程式(Application)
    以下分別介紹Andoid各個層次的軟體的重點及其相關技術:

● 作業系統層(OS)
    Android使用Linux2.6作為作業系統,Linux2.6是一種標準的技術,Linux也是一個開放的作業系統。Android對作業系統的使用包括核心和驅動程式兩部分,Android的Linux核心為標準的Linux2.6核心,Android更多的是需要一些與移動裝置相關的驅動程式。主要的驅動如下所示:
    顯示驅動(Display Driver):常用基於Linux的幀緩衝(Frame Buffer)驅動。
    Flash記憶體驅動(Flash Memory Driver)
    照相機驅動(Camera Driver):常用基於Linux的v4l(Video for )驅動。
    音訊驅動(Audio Driver):常用基於ALSA(Advanced Linux Sound Architecture,高階Linux聲音體系)驅動。
    WiFi驅動(Camera Driver):基於IEEE 802.11標準的驅動程式
    鍵盤驅動(KeyBoard Driver)
    藍芽驅動(Bluetooth Driver)
    Binder IPC驅動: Andoid一個特殊的驅動程式,具有單獨的裝置節點,提供程式間通訊的功能。
    Power Management(能源管理)

● 各種庫(Libraries)和Android 執行環境(RunTime)
    本層次對應一般嵌入式系統,相當於中介軟體層次。Android的本層次分成兩個部分一個是各種庫,另一個是Android 執行環境。本層的內容
大多是使用C++實現的。
    在其中,各種庫包括:
    ▅ C庫:C語言的標準庫,這也是系統中一個最為底層的庫,C庫是通過Linux的系統呼叫來實現。
    ▅ 多媒體框架(MediaFrameword):這部分內容是Android多媒體的核心部分,基於PacketVideo(即PV)的OpenCORE,從功能上本庫一共
分為兩大部分,一個部分是音訊、視訊的回放(PlayBack),另一部分是則是音視訊的紀錄(Recorder)。
    ▅ SGL:2D影像引擎。
    ▅ SSL:即Secure Socket Layer位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。
    ▅ OpenGL ES 1.0 :本部分提供了對3D的支援。
    ▅ 介面管理工具(Surface Management):本部分提供了對管理顯示子系統等功能。
    ▅ SQLite:一個通用的嵌入式資料庫
    ▅ WebKit:網路瀏覽器的核心
    ▅ FreeType:點陣圖和向量字型的功能。
       Android 的各種庫一般是以系統中介軟體的形式提供的,它們均有的一個顯著特點就是與移動裝置的平臺的應用密切相關。

        Android 執行環境主要指的虛擬機器技術——Dalvik。Dalvik虛擬機器和一般JAVA虛擬機器(Java VM)不同,它執行的不是JAVA標準的位元組碼(bytecode )而是Dalvik可執行格式(.dex)中執行檔案。在執行的過程中,每一個應用程式即一個程式(Linux的一個Process)。    二者最大的區別在於Java VM是以基於棧的虛擬機器(Stack-based),而Dalvik是基於暫存器的虛擬機器(Register-based)。顯然,後者最大的好處在於可以根據硬體實現更大的優化,這更適合移動裝置的特點。

● 應用程式框架(Application Framework)
      Android的應用程式框架為應用程式層的開發者提供APIs,它實際上是一個應用程式的框架。由於上層的應用程式是以JAVA構建的,因此本
層次提供的首先包含了UI程式中所需要的各種控制元件:
      例如: Views (檢視元件)包括 lists(列表), grids(柵格), text boxes(文字框), buttons(按鈕)等。甚至一個嵌入式的Web瀏覽器。
   一個Andoid的應用程式可以利用應用程式框架中的以下幾個部分:
   Activity (活動)
   Broadcast Intent Receiver (廣播意圖接收者)
   Service (服務)
   Content Provider (內容提供者)

● 應用程式(Application)
   Android的應用程式主要是使用者介面(User Interface)方面的,通常以JAVA程式編寫,其中還可以包含各種資原始檔(放置在res目錄中)JAVA程式及相關資源經過編譯後,將生成一個APK包。Android本身提供了主螢幕(Home),聯絡人(Contact),電話(Phone),瀏覽器(Browers)等眾多的核心應用。同時應用程式的開發者還可以使用應用程式框架層的API實現自己的程式。這也是Android開源的巨大潛力的體現。





相關文章