Google 的 Android 手機平台

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

簡介

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平台有可能是未來系統程式設計師的主要戰場之一,對於台灣的手機與筆電製造商而言應有相當大的吸引力,有興趣的讀者可以進一步參考相關的資源,並研究其相關的技術,以便有效的運用此一平台。

Facebook

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