跳至內容

Android

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

這是本頁的一個歷史版本,由59.124.214.99對話2010年5月26日 (三) 03:17 公佈前的傳聞編輯。這可能和目前版本存在着巨大的差異。

Android
開發者Open Handset Alliance
程式語言C語言、​C++、​Kotlin、​XML Schema、​Java、​Rust
運作狀態營運中
原始碼模式自由軟件
首次發佈2008年10月21日
目前版本2.2 (2010年5月20日,​14年前​(2010-05-20
內核類別整塊性核心Linux
許可證Apache 2.0GPLv2[1]
官方網站Android官方網站
倉庫 編輯維基數據連結
早期Android裝置

Android是基於Linux內核[2]軟件平台操作系統,是Google2007年11月5日公佈的手提電話系統平台,早期由Google開發,後由開放手機聯盟(Open Handset Alliance)開發。它採用了軟件堆層(software stack,又名以軟件疊層)的架構,主要分為三部分。低層以Linux核心工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發,以Java作為編寫程式的一部分。另外,為了推廣此技術,Google和其他幾十個手機公司建立了開放手機聯盟。Android在未公開之前常被傳聞為Google電話gPhone。大多傳聞認為Google開發的是自己的手機電話產品,而不是一套軟件平台。到了2010年1月,Google始發表自家品牌手機電話的Nexus One

歷史

T-Mobile G1

開發

Google於2005年並購了成立僅22個月的高科技企業Android,展開了短訊、手機檢索、定位等業務,同時基於Linux的通用平台也進入了開發。

2008 Patrick Brady於Google I/O 演講「Anatomy & Physiology of an Android」,並提出的 Android HAL 架構圖。HAL 以 *.so 檔的形式存在,可以把 Android framework 與 Linux kernel 隔開。

2010年2月3日,Linux內核開發者Greg Kroah-Hartman將Android的驅動程式從Linux內核「狀態樹」(「staging tree」)上除去,從此,Android與Linux開發主流將分道揚鑣。[3]

公佈前的傳聞

Google的東南亞銷售與營運常務董事Richard Kimber曾說:"At this point in time, we are very focused on the software, not the phone.(目前我們完全專注於軟件而非電話)"。可是Google並未正式否認正在製作電話的傳聞,Google可能與一家硬件生產商合作創作Google Phone。

傳言指出Google Phone將提供完全免費的服務,Google會透過廣告獲取收益。Google Phone的發佈日期預期為2009年

LG宣佈將於2007年第二季開始在其手提電話產品中安裝Google的軟件。[4]

升級

Android系統今後將繼續每半年一次的升級步伐,分別定在每年的夏天和年終。每代Android系統都將以食物命名,比如1.5版叫做Cupcake(紙杯蛋糕),1.6版為Donut(甜甜圈),然後是Eclair(法式奶油夾心甜點)和Froyo(冷凍乳酪)。Donut將把社交網絡功能作為升級重點,在「手機的各種體驗中」都增加社交網絡元素[5]

對手機行業的影響

已經與Sony EricssonHTCNTT DoCoMoKDDIMotorola等世界移動領域34家公司於免費提供達成一致。今後對於移動通訊的影響勢必會進一步體現出來。但是如此廣泛公司的同盟是否能夠有效運作及以持久值得拭目以待。

發佈

File:Android and cupcake.jpg
1.5
(Cupcake)
基於Linux Kernel 2.6.27
2009年4月30日,官方1.5版本(Cupcake)的Android發佈。[6][7]主要的更新如下:
  • 拍攝/回放影片,並支援上載到youtube
  • 支援立體聲藍牙耳機,同時改善自動配對效能
  • 最新的採用WebKit技術的瀏覽器,支援拷貝/粘帖和頁面中搜尋
  • GPS效能大大提高
  • 螢幕虛擬鍵盤
  • 主螢幕增加音樂播放器和相框widgets
  • 應用程式自動隨着手機旋轉
  • 短訊,Gmail,日歷,瀏覽器的用戶介面大幅改善,比如說Gmail現在可以批次刪除郵件了
  • 相機啟動速度加快,拍攝圖片可以直接上載到picasa
  • 來電相片顯示[8]
1.6
(Donut)
基於Linux Kernel 2.6.29
2009年9月15日, 1.6(Donut)版本SDK發佈。[9][10]主要的更新如下:
  • 完全重新設計的Android Market
  • 手勢支援
  • 支援CDMA網絡
  • 文字轉語音系統(TXT-2-speech)
  • 快速搜尋方塊
  • 全新的拍照介面
  • 應用程式耗電檢視
  • 支援VPN
  • 支援更多的螢幕解像度
  • 支援OpenCore2媒體引擎
  • 新增面向視覺或聽覺困難人群的易用性外掛程式[11]
2.0/2.0.1/2.1
(Eclair)
基於Linux Kernel 2.6.29
2009年10月26日, 2.0(Eclair)版本SDK發佈。[12]主要的更新如下:[13]
  • 優化硬件速度
  • "Car Home"程式
  • 支援更多的螢幕解像度
  • 重整介面
  • 新的瀏覽器的用戶介面和支援HTML5
  • 新的聯絡人名單
  • 更好的白色/黑色背景比率
  • 改進Google Maps 3.1.2
  • 支援Microsoft Exchange
  • 支援內建相機閃光燈
  • 數碼變焦
  • 改進的虛擬鍵盤
  • 藍牙2.1
2.2
(Froyo)
基於Linux Kernel 2.6.32
2010年5月20日, 2.2(Froyo)版本SDK發佈。[14]

已確定新功能:

  • 支援安裝軟件來擴展主記憶體 [15]
  • 整合Adobe Flash 10.1支援 [16]
  • 加強軟件即時編譯的速度 [17]
  • 新增軟件啟動"快速"至電話和瀏覽器 [18]
  • USB分享器和WiFi熱點功能 [19]
  • 支援在瀏覽器上載檔案 [20]
  • 更新Market中的"batch"和自動更新 [21]
  • 增加對Microsoft Exchange的支援 (安全政策, auto-discovery, GAL look-up)
  • 整合ChromeV8 JavaScript引擎應用到瀏覽器
  • 加強快速搜尋小工具

未確定新功能:

  • 更多軟件能透過Market更新, 類似2.0/2.1中的Map更新
  • 速度和效能優化 [21]
???
(Gingerbread)
基於Linux Kernel 2.6.33
已確定新功能:

系統架構

File:System-architecture.jpg
藍色部分:應用程式。 綠色黃色部分:中間件。 紅色部分:作業系統。

應用程式

Java為程式語言,使Android從介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類別(class)負責建立視窗(window),一個活動中的Activity就是在 foreground(前景)模式,背景執行的程式叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到複數程式同時執行的效果。如果執行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(stopped),甚至被系統清除(kill)。

View等同於J2ME的Displayable,程式人員可以透過 View 類別與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於ViewGroup 是各種layout 的基礎抽象類別(abstract class),ViewGroup之內還可以有ViewGroup。View的構造函數不需要再Activity中調用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關,兩者之間透過Listener 結合在一起,每一個View都可以註冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架註冊View.OnClickListener。另外還有Image等同於J2ME的BitMap。

中間件

作業系統與應用程式的溝通橋樑,並用分為兩層:函數層(Library)和虛擬機器(Virtual Machine)。

Bionic是 Android 改良libc的版本。Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到螢幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。

Android採用OpenCORE作為基礎多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當,但相較於Linux Cairo, skia 功能還只是陽春型的。2005年Skia公司被Google收購,2007年初,Skia GL原始碼被公開,目前Skia 也是Google Chrome 的圖形引擎。

Android的多媒體資料庫採用SQLite資料庫系統。資料庫又分為共用資料庫及私用資料庫。用戶可透過ContentResolver類別(Column)取得共用資料庫。

Android的中間層多以Java 實作,並且採用特殊的Dalvik 虛擬機器(Dalvik Virtual Machine)。Dalvik虛擬機器是一種「暫存器型態」(Register Based)的Java虛擬機器,變數皆存放於暫存器中,虛擬機器的指令相對減少。

Dalvik虛擬機器可以有多個instance, 每個Android應用程式都用一個自屬的Dalvik虛擬機器來執行,讓系統在執行程式時可達到最佳化。Dalvik 虛擬機器並非執行Java Bytecode,而是執行一種稱為.dex格式的檔案。

硬件抽像層

Android HAL 是為了將 Android framework 與 Linux kernel 隔開,降低對 Linux kernel 的依賴,以達成kernel independent。Android HAL 目前以 HAL stub 的形式存在,本身是.so 檔,是一種 proxy 的概念。Android runtime 向 HAL 取得 stub 的 operations,再以 callback 的方式操作函數。

作業系統

Android 是執行於 Linux kernel之上,但並不是GNU Linux。因為在一般GNU/Linux 裏的功能,Android 大都沒有支援,包括Cairo, X11, Alsa, FFmpeg, GTK, Pango, Glibc等都移除掉了。Android又以bionic 取代Glibc, 以Skia 取代Cairo, 再以opencore 取代FFmpeg 等等。Android 為了達到商業應用,必須移除關於GNU Copyleft 的限制,例如Android將驅動程式移到 userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files. Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、資料結構與巨集。

目前Android 的 Linux kernel控制包括安全(Security),記憶體管理(Memory Managemeat),程式管理(Process Management),網絡堆疊(Network Stack),驅動程式模型(Driver Model)等。下載Android原始碼之前,先要安裝其構建工具 Repo來初始化原始碼。Repo 是 Android 用來輔助Git工作的一個工具。

搭載Android系統的裝置產品

Android裝置列表

參考

  1. ^ Licenses. Android Open Source Project. Open Handset Alliance. [2008-10-22]. 
  2. ^ http://lwn.net/Articles/373374/ Some clarification on "the Android Kernel"
  3. ^ 新浪科技. 谷歌Android被Linux內核除名. 2010年2日4 [2010年4月9日] (中文(簡體)). 
  4. ^ LG Electronics and Google Team Up to Enhance the Mobile Experience - 樂金新聞稿,2007年3月28日
  5. ^ Google:Chrome與Android系統各有分工
  6. ^ Ducrohet, Xavier. Android 1.5 is here!. Android Developers Blog. 27 April 2009 [2009-09-03]. 
  7. ^ Rob, Jackson. CONFIRMED: Official Cupcake Update Underway for T-Mobile G1 USA & UK!. Android Phone Fans. 30 April 2009 [2009-09-03]. 
  8. ^ Android 1.5 Platform Highlights. Android Developers. April 2009 [2009-09-03]. 
  9. ^ Ducrohet, Xavier. Android 1.6 SDK is here. Android Developers Blog. 15 September 2009 [2009-10-01]. 
  10. ^ Ryan, Paul. Google releases Android 1.6; Palm unleashes WebOS 1.2. ars technica. 1 October 2009 [2009-10-01]. 
  11. ^ Android 1.6 Platform Highlights. Android Developers. September 2009 [2009-10-01]. 
  12. ^ Android 2.0, Release 1. Android Developers. [27 October 2009]. 
  13. ^ Android 2.0 Platform Highlights. Android Developers. [27 October 2009]. 
  14. ^ Savov, Vladislav. Next Android version will be called Froyo, says Erick Tseng. Engadget.com. 16 January 2010 [2010-01-16]. 
  15. ^ Android support for memory card app storage is finally "coming soon". Google Code. [1 May 2010]. 
  16. ^ Google's Andy Rubin on Everything Android. NY Times. [20 May 2010]. 
  17. ^ Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster. androidpolice. [13 May 2010]. 
  18. ^ A Video Of An Adobe Evangelist Showcasing Flash 10.1 Smoothly Running On A Nexus One With Android 2.2 Froyo. androidpolice. [13 May 2010]. 
  19. ^ Exclusive: Google To Add Tethering, Wifi Hotspot To Android 2.2 Froyo. TechCrunch. 13 May 2010 [13 May 2010]. 
  20. ^ Browser support for file upload field is coming in Froyo. Google Code. [13 May 2010]. 
  21. ^ 21.0 21.1 Unofficially Confirmed Froyo Features, Post-Day-1 Of Google I/O. Android Police. [20 May 2010]. 
  22. ^ When will other Google products support WebM and VP8?. The WebM Project. [20 May 2010]. 

外部連結