android自學筆記《三》——系統架構分析

下面是Android的系統架構圖              
 
 
 
                         翻譯後                       
 
 
 
 
 
      從上圖中可以看出,Android系統架構為4層結構,從上層到下層分別是應用程序層、應用程序框架層、系統運行庫層以及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(C庫):
 
 
             從BSD繼承來的標準C系統函數庫,專門為基於embedded linux的設備定制
 
 
 
 
 
         b)Android運行時
 
             Android應用程序時采用Java語言編寫,程序在Android運行時中執行,其運行時分為運行時核心庫和Dalvik虛擬機兩部分。
 
 
             Ø   運行時核心庫
 
                 核心庫提供瞭Java語言API中的大多數功能,同時也包含瞭Android的一些核心API,如android.os、android.net、android.media等等。
 
 
             Ø  Dalvik虛擬機
 
                 區別於Java虛擬機的是,每一個Android 應用程序都在它自己的進程中運行,都有一個屬於自己的Dalvik 虛擬機,這一點可以讓系統在運行時可以達到優化,程序間的影響大大降低。
 
                 Dalvik虛擬機並非運行Java字節碼,而是運行自己的字節碼。
 
 
 
    4)Linux內核層
 
        Linux 內核是硬件和軟件層之間的抽象層。
 
        Android是基於Linux2.6內核,但是把linux內受GNU協議約束的部分做瞭取代,這樣Android的程序就可以用於商業目的。
 
     其核心系統服務如安全性、內存管理、進程管理、網路協議以及驅動模型都依賴於Linux內核。

摘自 郭子的博客
 

發佈留言