• 沒有找到結果。

A NDROID 作業系統

第二章 文獻探討

2.1 A NDROID 作業系統

2007 年 11 月,Google 與高達 33 間手機製造商手機開發製造商、手 機晶片供應商、軟硬體供應商和電信業者聯合組成的『開放手持裝置聯盟』

(Open Handset Alliance),發佈了「Android」開放手機操作系統。

Android 是一個以 Linux 核心的且免費的手機作業系統,裡面包含了作 業系統、中介軟體和應用程式三個部分,Android 的特點如下:

 多媒體支援-包含 MPEG-4、H.264、MP3、AAC、AMR、JPG、

PNG、GIF 格式。

 通訊技術-支援包含藍芽、EDGE、3G 與 Wi-Fi。

2.1.1 Android 系統架構

Android 架構是由應用程式(Application)、應用程式框架(Application Platform)、函式庫(Libraries)、各類驅動程式(Drivers)與 Linux 核心(OS kernel) 組成,如下圖(圖 2.1)[3],藍色部分為應用程式層,綠色及黃色部分為中介 軟體層,紅色部分為操作系统層。

圖 2.1 Android 系統平台結構

2.1.2 應用程式層

最頂端的應用層是使用者所能接觸到的階層,包括 Android 系統本身 以提供的基本桌面(Home),電話簿(Contact)、數位電話(Phone)和網頁瀏覽 器(Browser)等都是應用程式所提供的基本功能。Android 是以 Linux 為基礎 的開放操作系统,從上述所講介面(interface)到操作各式各樣的應用程式功 能,大部分是以 Java 作為語言撰寫而成。 雖然 2010 年,google 雖然發布 了 Android NDK,使得可以讓開發者用 C/C++來作編譯程式,但目前版本 的 NDK 目前發展功能有限,例如: NDK 並沒有提供應用程序上生命週期的 維護或者作為轉換應用程序的 UI API,也尚未提供。由此可見,NDK 仍需 要時間來改善和發展。

Android 作業系統平台以一個主執行緒(Thread)為基礎來執行相關的套 件,包括了廣播接收程式(Broadcast Receivers) 、服務程式、機動程式和資 料內容提供程式(Content Providers)。Android 作業系統並不是採用 JVM,

而是採用 Dalvik Virtual Machine(Dalvik VM)虛擬系統,Dalvik VM 會在下 一小節當中詳細介紹,所以 Android 應用程式是由常駐在 Linux 核心的 Dalvik Virtual Machine 來負責運作(圖 2-2)[4]。

圖 2.2 Android 作業系統的運作

2.1.3 中介軟體層

中介軟體(middleware)是操作系统與應用程式間的溝通橋樑,並分為函 式層(Library)和虛擬機器(Virtual Machine),程式碼主要是由 C/C++組成。

Android 同時包含了 Webkit,所謂的 Webkit 就是 Apple Safari 瀏覽器 背後的引擎。Android 採用 OpenCORE 作為基礎多媒體框架,OpenCORE 又可分為七大塊:PVPlayer、PVAuthor、Codec、Packet Video Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、

Common、OpenMAX。Android 使用 skia 為核心圖形引擎,搭配 OpenGL/ES。

skia 與 Linux Cairo 功能相當,但相較於 Linux Cairo, skia 功能還是較為陽

春。2005 年 Skia 公司被 Google 收購,目前 skia 也是 Google Chrome 的圖 形引擎。Android 的多媒體資料庫採用 SQLite 資料庫系統,資料庫又分為 共用資料庫及私用資料庫,使用者可透過 ContentResolver 類別取得共用資 料庫。

Android 中間層採用特殊的 Dalvik 虛擬機器,Dalvik VM 是一種暫存器 型態(Register Based)的 Java 虛擬機器(Java virtual machine, JVM),變數皆存 放於暫存器中,虛擬機器的指令相對減少,Dalvik 虛擬機器可以有多個 instance,每個 Android 應用程式都用一個自屬的 Dalvik 虛擬機器來執行,

讓系統在執行程式時可達到最佳化。所以,副檔名.class 的檔案還會被 Android SDK 當中的 dx 工具再轉換成 Dalvik VM 可執行的副檔名.dex,然 後 Android SDK 會將所有檔案封裝成副檔名為.apk 的封裝檔,供手機用戶 下載執行,流程如圖 2-3 所示。

圖 2.3 Android 應用程式產生流程

2.1.4 硬體抽像層

Android 的硬體抽像層(Hardware Abstraction Layer, HAL)是因為廠商不 希望公開程式碼的要求下所推出的觀念,其目的是採用 HAL 把 Android framework 與 Linux kernel 隔開,讓 Android 可以獨立運作而不會過度受到 Linux kernel 影響。所以目前最新的 HAL 做法,是採用 JNI 的方式進行。

相關文件