Google 的 Android 手機平台

簡介

2007 年 10 月,『Google 手機』即將出現的傳聞吵得沸沸煬煬,2007年11月12日,Google 終於公布了 Android 手機開發平台,原來、Google 並非要做手機,而是直接釋出了一個基於 Linux 的手機平台 - Android,Android 平台的核心採用了 GPL v2 的授權,應用部分則採用了 Apache Software License 授權,這意味著手機產業可能會有所改變,由於已經有 33 家廠商參與 Android 的 Open Handset Alliance聯盟,目前市場上以 Nokia 的 Symbian 平台與微軟 Windows Mobile 平台為主的局勢很可能會被打破,Google 所採用的開放原始碼架構對廠商與開發者都有相當大的吸引力,因此、Android 可望再手機平台上異軍突起,這是所有手機軟硬體開發者都應該仔細研究的一項新興技術。

Android 平台的架構

圖 1 顯示了Android 平台的整體架構,平台的底層採用了 Linux 作為作業系統 (圖中的紅色部分),在Linux作業系統之下、內建了許多控制裝置的驅動程式,包含藍芽(Bluetooth)、無線網路(WiFi)、隨插即用的USB 介面等等,當然還有記憶體、銀幕、鍵盤、照像、音效等裝置的驅動程式,在 Linux 作業系統之上,內建了許多由 C/C++ 語言所開發出來的函式庫 (Libraries) (圖中的綠色部份),包含 libc、OpenGL/ES、WebKit、Sqlite等。

AndroidArchitecture.jpg

圖 1. Google 的 Android 平台架構

圖 1 的藍色部分是Android平台的應用程式,這些應用程式以Java作為主要的開發語言。透過這樣的布局,Google 可以有效的引入Java社群長期累積的資源,以便利用Java程式設計社群的力量。雖然Android平台中大量的使用了開放原始碼的資源,但是為了避免軟體廠商被迫要開放原始碼,Android在應用端所使用的是 Apache Software License (ASL)[1][2],ASL 並不要求軟體開發者要開放原始碼,這使得軟體開發廠商可以透過開發 Google 手機程式營利。

Google 在手機開發平台上的這種佈局是相當精巧而有彈性的,一方面藉助開放原始碼社群的力量,另一方面又可以吸引手機製造公司與軟體設計公司紛紛加入戰局,而不需要受到開放原始碼與平台授權金的限制,這使得 Google Phone – Android 平台具有相當大的吸引力。

DVM 虛擬機

應用層的核心是由Android Runtime所構成的,其中包含了一個虛擬機 Dalvik Virtual Machine (DVM) 與Java的核心函式庫 (Core Libraries),該核心函式庫主要來自Apache組織的Harmony計畫,這樣就可以更容易與昇陽進行切割,避免引起侵權訴訟。

Android 利用 DVM 虛擬機建構出一組應用架構 (Application Framework),以協助應用程式設計者開發出好的應用程式。DVM 與昇陽的 JVM 在架構上完全不同,JVM採用了堆疊機的架構,但是DVM採用的是暫存器機的架構,因此,Java 的 Bytecode 並不能直接放入 DVM 中執行,而是要透一個稱為dx的轉換工具,該工具可以將 Java 的 bytecode 檔案 (*.class) 轉換成 DVM 的目的碼 (*.dex)。

程式設計師可以在個人電腦上開發程式並且於模擬器中測試完畢後,才將.class 的 bytecode 檔案轉換成 .dex 檔案,放到 Android 裝置上執行。透過這種方式,Google 直接吸收了昇陽的所有開發工具,並且迴避掉昇陽在JVM虛擬機上的專利與授權問題,讓昇陽的所有資源為其所用。並且吸收了開放原始碼社群與Java社群長期累積的資源,讓這些資源盡可能的匯流到 Android平台當中。

DVM 的設計主要是為了使用電池的行動裝置而考慮的,必須能運作在記憶體很小的裝置上,而且可以很省電。因此許多設計都特別為行動裝置而特別考慮。舉例而言,由於目前手機市場的處理器以 ARM 為主,於是 Android 特別最佳化 DVM 在 ARM 處理器上的效能,甚至位元組的順序上都與 ARM 一致,如此就能提升 DVM 在 ARM 處理器上的執行速度,這也是 DVM 設計的重要決策之一。

在 .class 的 bytecode 轉換為 .dex 目的檔的過程中,許多的 .class 檔案會被靜態的連結在一起,重覆的常數只會出現一次,簡單的短函數會自動被改為內嵌(inline)的方式,以增快執行速度。另外,在安裝 .dex 檔案到目標平台的過程中,假如目標平台的位元順序與原始的 .dex目的檔不同,安裝程式會重排其位元組順序以便增快速度。

為了進一步提升效率,Google 的 Android 與微軟 .NET 平台都使用了較多的外部函式庫,特別是與銀幕顯示相關的函數,這可以讓強調多媒體功能的應用可以很流暢的執行。Google 在這方面顯然記取了原先昇陽在 JAVA上的教訓,因為昇陽的Swing等視覺化函式庫顯然不夠流暢且速度太慢。

Android 的手機模擬器

在 Google 所提供的 Android 開發工具當中,附有模擬器環境,您可以在桌上型電腦中開發 Android 的 Java 程式,然後在上傳時 Google 工具會將 JVM 的 bytecodes 轉換成 DVM 的目的碼,然後才傳送到到 Android 平台的目標裝置中執行。圖 9.9為該模擬環境的畫面,有興趣的讀者可以從 Android 的官方網站中下載該開發工具。

AndroidEmulator.jpg

圖 2. Google 平台Android的模擬器環境

宏達電 (HTC) 是第一家販售 Android 手機的公司,第一支 Android 手機由 HTC T-Mobile G1拔得頭籌。目前,各家手機製造商紛紛投入製造 Android 手機,Motorola, Samsung, Acer 等公司都已經投入 Android 手機的製造,並且發行了數款 Android 手機。甚至,資策會、宏碁等公司更已經將Android放入迷你筆記型電腦當中,準備作為免費的作業系統。Android平台有可能是未來系統程式設計師的主要戰場之一,對於台灣的手機與筆電製造商而言應有相當大的吸引力,有興趣的讀者可以進一步參考相關的資源,並研究其相關的技術,以便有效的運用此一平台。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License