標籤:
讓我們來快速預覽一下整個android系統的架構。從下面的圖中我們可以發現,這個架構分為幾個不同的層,底層為上一層提供服務。
Linux Kernel
android系統建立在一個堅固的基石上:Linux核心。Linus Torvalds於1991年建立了它。Linux為android提供了硬體抽象層,使得android可以
很輕鬆的安裝在各種平台上。
從實質上來說,Linux為android提供了記憶體管理,進程管理,網路服務,和其他的一些系層級的服務。
作為一個android開發人員,你不會直接接觸Linux核心層面的東西,但是你最好瞭解有這麼一回事。
Native Libaraies(本地庫)
Linux 核心的上一層就是Android的本地庫了,這些庫都是用 C 或者C++寫的。他們為特定的硬體構架編譯,並被手機供應商預裝在手機中。
一些重要的庫:
• Surface Manager 介面管理器
android使用了一種組合的視窗管理機制,你的程式繪圖指令並不是直接作用在螢幕的緩衝上,而是先繪製為非顯示位元影像,然後和螢幕上的其他位元影像結合,
最後顯示給使用者。這使得系統可以完成一些有趣的視窗變化。
• 2D 和 3D 繪圖
• 音視頻解碼
Android可以播放視頻,錄製視頻一些格式的視頻,如ACC AVC MP3 MPEG-4
• SQL資料庫
android本身包含一個輕量級的資料庫:SQLite 。
Firefox瀏覽器和蘋果手機也是使用的這個資料庫。
你的程式可以通過資料庫將一些資料永久儲存到手機中。
• 瀏覽器引擎
為了快速顯示HTML描述的內容,android使用WebKit 庫,同樣使用這個庫的還有Google瀏覽器,蘋果的Safari 。
這些庫本身並不是完整的應用程式,他們的作用是為上層的應用程式提供支援。如果你感興趣,你可以用NDK來編寫你自己的本地庫。
Android Runtime 運行時
在Linux核心上面的還有Android Runtime,它包括一個特別的虛擬機器Dalvik,以及java核心庫。Dalvik是Google專門為android編寫的一個虛擬機器,你的應用程式在編譯後
被轉換為平台無關的位元組碼檔案,然後,在程式運行時,Dalvik解釋並執行這些位元組碼指令。儘管這個位元組碼的格式和一般java位元組碼格式不同,但是Dalvik實質還是一個java虛擬機器。只不過它對記憶體的要求低一些。並且,android系統可以為多個程式同時運行多個虛擬機器,他們之間是隔離的。
Dalvik與傳統的java虛擬機器有2個重要的不同之處:
1、Dalvik啟動並執行是.dex尾碼的檔案。在編譯期間,傳統的.class 檔案會被轉化為.dex檔案,.dex檔案比傳統的.class檔案更加緊湊高效。這樣做是考慮到手機等行動裝置有限的
電量和記憶體。
2、android runtime 層中的java core library 和 傳統的 JavaEE javaME庫都不是完全相同的。
Application Framework 應用程式架構
再上一層,就是應用程式架構了。這個層提供了高層次的開發模組。方便你用來開發應用程式。他們被預裝到android系統中
下面手是一些重要的部分
• Activity Manager:
它控制著應用程式的生命週期,並維護著一個程式公用的回退棧。
• Content providers:
封裝著應用程式之間共用的資訊。比如連絡人。
• Resource manager:
資源管理員,管理非代碼部分。
• Location manager:
地區管理器:無論你的android手機在哪裡,它都知道知己的所處地區環境。
• Notification manager:
訊息管理器:用來通知一些訊息事件,比如新的資訊,鬧鐘,等等。
Application and Widget 應用程式和控制項
Application 應用程式會佔據整個螢幕來與使用者互動,而Widget (控制項)則只佔據一個小的矩形地區。
【譯】Android系統架構