基本上Android系統的結構分為四層,分別是應用層(Application)、框架層(Application Framework)、系統運行庫層與Linux核心(Linux Kernel)。
1. 應用層(Application)
Android會同一系列核心應用程式包一起發布,該應用程式包包括email、簡訊(Short Message Service, SMS)、日曆、地圖、瀏覽器、聯絡人管理等功能。並且所有的應用程式都是由Java所編寫而成。
2. 框架層(Application Framework)
開發人員可以完全訪問核心應用程式所使用的API框架(android.jar)。該應用程式的架構設計簡化了組件的重用,任何一個應用程式都可以發布它的功能模組,並且任何其它的應用程式都可以使用其所發布的功能模組。簡言之,如開頭的結構圖所示,這層提供我們許多API接口供我們所需的服務,例如常見的WindownManager、NotificationManager等等。
3. 系統運行庫層
3-1. 函式庫(Libraries)
Android包含一些C/C++庫,這些函式庫能被Android系統中不同的組件使用。它們通過 Android應用程式框架為開發者提供服務。舉凡結構圖所示,管理2D與3D圖像顯示的外觀管理函式庫SurfaceManager、播放音訊與視訊等檔案的多媒體函式庫MediaFramework、輕量級資料庫SQLite、3D圖形函式庫OpenGL|ES、用於位圖(bitmap)和矢量(vector)字體顯示的FreeType、Android內建的HTML引擎Webkit、處理Android 2D圖形的SGL、作為安全通訊協定的SSL、專門為基於 embedded Linux 的設備定製的C系統函數庫libc,皆為系統運行庫層的其中一員。
3-2. ART(Android Runtime)
ART於Android 5.0開始取代Dalvik虛擬機器。其採用AOT(Ahead-of-time)這種預先編譯的技術,提升了整體應用程式的執行效能。ART也優化了Java的資源回收機制(Garbage Collection, GC)。
一般來說,撰寫好的Java檔編譯後會產生Class檔,並交由JVM來執行。但是Android並不使用JVM,而是使用ART,同時其執行的檔案也非Class檔,而是dex(Dalvik Executable)檔。原因為dex檔比Class檔更加精簡,執行效率更高更省電,是為行動裝置所打造的一個執行檔。
4. Linux核心(Linux Kernel)
Android 的核心系統服務依賴於 Linux 2.6 內核,如安全性、內存管理、進程管理(System Process Management)、 網絡協議堆疊(Internet Protocol Stack)和驅動模型。 Linux 內核也同時作為硬體和軟體之間的抽象層。
參考來源:
1. https://kknews.cc/zh-tw/tech/y88rv3j.html
2. https://read01.com/NayJBz.html#.Wxd4vFOFPR0
3. http://www.jollen.org/blog/2011/12/android-aosp-browser-webkit-struggling.html
4. https://books.google.com.tw/books?id=2oYmDwAAQBAJ&pg=SA3-PA27&lpg=SA3-PA27&dq=SurfaceManager+%E5%AF%A6%E4%BD%9C&source=bl&ots=NHteHB7wLX&sig=M_9mcr4FHA8wT6Gp1rUdFA9KdXg&hl=zh-TW&sa=X&ved=0ahUKEwjx3-2Ys77bAhXEoJQKHdD6AdoQ6AEIWTAJ#v=onepage&q&f=false
沒有留言:
張貼留言