硬體支援
由於Android作業系統的開放性和可移植性,它可以被用在大部分電子產品上。包括:智慧型手機,上網本,平板電腦,個人電腦,筆記本電腦,電 視,機頂盒,MP3播放器,MP4播放器,掌上遊戲機,家用主機,電子手錶,電子收音機,耳機,汽車設備,導航儀,CD機,VCD機,DVD機,機頂盒以 及其他設備。
Android作業系統大多搭載在使用了ARM架構的硬體設備上。但是同樣也有支援X86架構的Android作業系統,比如Google的Google TV就是使用一個特別定製的X86架構版本的Android操作系統。
同樣,蘋果公司的iOS設備,比如iPhone、iPod Touch以及iPad產品都可以安裝Android作業系統,並且可以通過雙系統啟動工具OpeniBoot或者iDroid來執行Android作業 系統。微軟的Windows Mobile、Windows Phone產品也一樣可以。另外Android亦已成功移植到搭載WebOS系統HP TouchPad以及搭載Meego系統的Nokia N9等裝置。
世界上第一部真正意義上使用Android作業系統的設備是2008年10月22日發布的HTC Dream。
Android可以像用電腦上網一樣,使用任何服務。Android對手有蘋果公司的iOS作業系統及諾基亞的Symbian及Microsoft的Windows Phone 7及RIM使用的BlackBerry OS系統。
應用程式
Google Play
Google Play,前身為Android Market,目前沒有規範的中文名,中國大陸地區大多使用「電子市場」以及「Google市場」來稱呼,因Android Market的LOGO像菜市場用的袋子,所以部分中國使用者又稱之為「菜市場」。2009年2月,Google推出Android Market線上應用程式商店,使用者可在該平台網頁尋找、購買、下載及評級使用智慧型手機應用程式及其他內容。 第三方軟體開發商和自由開發者則可以通過Android Market發布其開發的應用程式。截止至2011年10月,Android Market上已有超過30萬個應用程式,並且在2011年12月,Android Market上的應用程式下載量超過100億次。同時,全球已有1億3千萬部Android設備在Android Market即現在的Google Play上下載過軟體。
只有通過Google許可並且認證的廠家才能在其產品設備上安裝Google服務框架和Google Play。同時受到部分地區和國家的政策影響,Google根據部分地區和國家的政策對Google Play上的內容進行了過濾,因此各地區和國家看到的內容不一樣。此外,受到部分地區和國家的電信運營商的影響,Google Play在部分地區和國家可能不可使用。
Google Play內的付費程式在許多國家與地區內提供,如美國、英國、瑞典、德國、斯里蘭卡、泰國、越南、香港、台灣等。由於受到Google結束中國事件影響,目前Google Play的服務還沒有擴展到中國大陸地區,但大陸用戶仍可通過國際信用卡和相關的免費軟體來完成購買。需要注意的是,通過這種方法購買的軟體可能不會得到當地承認的發票(Invoice)。
除了Google的Google Play之外,還有其他公司的應用程式市場,如亞馬遜公司的Amazon Appstore,它們都提供在線的APK程式的安裝和下載。
程式開發
在早期的Android應用程式開發中,通常通過在Android SDK(Android軟體開發包)中使用Java作為編程語言來開發應用程式。開發者亦可以通過在Android NDK(Android Native開發包)中使用C語言或者C++語言來作為編程語言開發應用程式。同時Google還推出了適合初學者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,Google還推出了Google App Inventor開發工具,該開發工具可以快速地構建應用程式,方便新手開發者。應用程式安全機制
Android作業系統使用了沙箱(sandbox)機制,所有的應用程式都會先被簡單地解壓縮到沙箱中進行檢查,並且將應用程式所需的權限送出給 系統,並且將其所需權限以列表的形式展現出來,供用戶檢視。例如一個第三方瀏覽器需要「連接網路」的權限,或者一些軟體需要撥打電話,發送簡訊等權限。用 戶可以根據權限來考慮自己是否需要安裝,用戶只有在同意了應用程式權限之後,才能進行安裝。惡意程式與病毒
由於Android作業系統的開放和自由性,一些惡意程式和病毒也隨之出現。2010年8月,卡巴斯基病毒實驗室報告稱發現了Android作業系統上首個木馬程式,並將其命名為「Trojan-SMS.AndroidOS.FakePlayer.a」,這是一個通過簡訊方式感染智慧型手機的木馬,並且已經感染了一定數量的Android設備。除了簡訊感染方式,這些Android木馬還可以偽裝成一些主流的應用程式,並且還可以隱藏在一些正規的應用程式之中。儘管Google通過定期的檢查撤除這些存在於 Google Play 上的惡意程式和病毒,但是這並不能完全阻止其他病毒通過第三方網路的方式產生並且傳播。
目前Android作業系統上已經擁有防病毒程式來防止設備中毒,例如 Avast、F-Secure、Kaspersky、Trend Micro、Symantec、 金山毒霸等防護軟體也已經發布了Android版本。
某些病毒,目前經過Cross-Compile的測試,證實在Linux上他們無法正常運作。
盜版問題
由於第三方市場流行,Android用戶大多不願意付費購買應用,轉而直接下載已被駭客破解的軟體檔,對應用開發者造成嚴重損失。有遊戲開發者針對其作品的調查指出,97%亞洲玩家、70%歐洲玩家及47%北美玩家都下載盜版。SEAndroid
美國國家安全域在2012年1月發布SEAndroid開源項目和程式碼,使Android系統支援強制存取控制(Mandatory Access Control)以增加系統安全性。市場佔有率
2009年第二季度,根據市場研究公司Canalys的數據顯示,Android佔據全球智慧型手機作業系統市場2.8%的份額,這個數字在2010年第四季度的全球份額中增長到了33%,Android作業系統也因此擊敗了諾基亞的Symbian系統成為了全球第一大智慧型手機作業系統。2012年5月,根據市場調查公司的數據顯示,Android作業系統在全球智慧型手機作業系統中的份額已經過半,達到了60%,全球有一半的智慧型手機使用Android作業系統。2010年5月的數據顯示,Android作業系統在2010年第一季度的銷量超過了對手iOS平台,成為美國最大的智慧型手機作業系統。
根據本土市場研究公司ComScore的數據顯示,2009年11月時,Android在美國的智慧型手機作業系統市場的佔有率為5.2%,在2010年2月時,這個數字變成了9.0%,而在2010年第三季度末時,Android已經佔據了美國市場的21.4%的份額。截止至2011年6月,Google表示,每日通過Google服務器啟用的Android設備達到了55萬部,並且以每週4.4%的速度增長。2011年8月1日,Canalys的數據顯示,Android已佔據美國48%的智慧型手機市場佔有率。2011年10月13日,Google表示,全球市場上有1.9億部Android設備通過Google認證,而在2011年11月16日,全球市場上已有2億部Android設備通過Google認證。但是,搭載Android作業系統的平板電腦卻只有1.9%的份額,只有380萬Android蜂巢平板被賣出,遠遠低於蘋果公司的iPad的銷量。2012年6月,Google在2012 Google I/O大會上表示全球市場上有4億部Android設備被啟動,每天啟動一百萬台
2013年5月,Android在中國的佔有率有71.5%,超過其主要競爭對手蘋果公司約50%。世界佔有率亦有近70%。
使用者使用系統版本比例
截止至2013年6月3日,不同的Android作業系統版本的用戶比例。版本名稱 | API level | 用戶分佈 |
---|---|---|
4.2.x Jelly Bean 果凍豆 | 17 | 4.0% |
4.1.x Jelly Bean 果凍豆 | 16 | 29.0% |
4.0.x Ice Cream Sandwich 冰淇淋三明治 | 14-15 | 25.6% |
3.x.x Honey Comb 蜂巢 | 11-13 | 0.1% |
2.3.x Ginger Bread 薑餅 | 9-10 | 36.5% |
2.2 Froyo 霜凍優格 | 8 | 3.2% |
2.1 Eclair 閃電泡芙 | 7 | 1.5% |
1.6 Donut 甜甜圈 | 4 | 0.1% |
版本
Android作業系統曾有兩個內部版本,分別是阿童木(Astro)和發條機器人(Bender),在這兩個版本之後,Google為了避免商標問題,將Android作業系統的代號由機器人系列轉變為了現在的甜點系列。[69]而現時Android系統以差不多每半年一次的步伐進行升級,比如1.5版叫做Cupcake(紙杯蛋糕)、1.6版為Donut(甜甜圈)、2.0/2.1版為Éclair(閃電泡芙,一種法式奶油夾心甜點)、2.2版為Froyo(霜凍優格)、2.3版為Gingerbread(薑餅)、3.0版為Honeycomb(蜂窩)、4.0版為Ice Cream Sandwich(冰淇淋三明治)、4.1/4.2/4.3版稱為Jelly Bean(雷根糖)及5.0版稱為Key Lime Pie(墨西哥萊姆派)。這些是以A、B、C、D、E、F、G、H、I、J、K字頭順序來排列的。由於Android平台的高度開放和對軟體升級架構尚欠規範,導致Android產品往往因新版軟體的硬體要求過高,或致設備廠商無法保證對其產品提供最新版軟體更新,或致廠商拒絕支援而無法更新,令產品壽命週期大幅縮短及衍生俗稱「孤兒機」問題。
發佈
1.5 (Cupcake) 基於Linux Kernel 2.6.27 |
2009年4月30日,官方1.5版本(Cupcake 紙杯蛋糕)的Android發行。
主要的更新如下: |
---|---|
1.6 (Donut) 基於Linux Kernel 2.6.29 |
2009年9月15日,1.6(Donut 甜甜圈)版本軟體開發套件發佈。主要的更新如下:
|
2.0/2.0.1/2.1 (Eclair) 基於Linux Kernel 2.6.29 |
2009年10月26日,2.0(Eclair 鬆餅)版本軟體開發套件發佈。主要的更新如下:
|
2.2/2.2.1 (Froyo) 基於Linux Kernel 2.6.32 |
2010年5月20日,2.2(Froyo 冷凍優格)版本軟體開發套件發佈。主要的更新如下:
註:部分標稱為2.2的韌體仍然在使用2.6.29的核心。這種韌體可以實作大部分2.2的功能(比如flash),但效能上與2.6.32有一定差距。 |
2.3 (Gingerbread) 基於Linux Kernel 2.6.35 |
2010年12月7日,2.3(Gingerbread 薑餅)版本軟體開發套件發佈。主要的更新如下:
|
3.0.1/3.1/3.2 (Honeycomb) 基於Linux Kernel 2.6.36 |
2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要更新如下:
|
4.0 (Ice Cream Sandwich) 基於Linux Kernel 3.0.1 |
2011年10月19日,4.0(Ice Cream Sandwich 冰淇淋三明治)版本主要更新如下:
|
4.1/4.2/4.3 (Jelly Bean) 基於Linux Kernel 3.4.0 |
2012年6月28日,Android 4.1(Jelly Bean 果凍豆)版本主要更新如下:
|
5.0 (Key Lime Pie) |
2012年12月3日有報導指谷歌正在開發Android 5.0。有Google員工證實作業系統將命名為Key Lime Pie。 |
系統架構
應用程式
Android以Linux為核心的Android行動平台,使用Java作為程式語言,使介面到 功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個Activity類別負責建立視窗,一個活動中的Activity就 是在foreground(前景)模式,背景執行的程式叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到複數 程式同時執行的效果。如果執行中的Activity全部畫面被其他Activity取代時,該Activity便被停止,甚至被系統清除。View等同於J2ME的Displayable,程式人員可以透過View類別與「XML layout」檔將UI放置在視窗上,並可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計 layout。至於ViewGroup是各種layout的基礎抽象類別,ViewGroup之內還可以有ViewGroup。View的建構函式不需要 在Activity中呼叫,但是Displayable的是必須的,在Activity中,要透過findViewById()來從XML中取得 View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件息息相關,兩者之間透過Listener結合在一起,每一個 View都可以註冊event listener,例如:當View要處理使用者觸碰的事件時,就要向Android框架註冊View.OnClickListener。另外還有 Image等同於J2ME的BitMap。
中介軟體
作業系統與應用程式的溝通橋樑,並用分為兩層:函式層和虛擬機器器。 Bionic是Android改良libc的版本。Android同時包含了Webkit,所謂的Webkit就是Google Chrome瀏覽器背後的引擎。Surface flinger是就2D或3D的內容顯示到螢幕上。Android使用工具鏈為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類別取得共用資料庫。
Android的中間層多以Java實作,並且採用特殊的Dalvik虛擬機器器。Dalvik虛擬機器器是一種「暫存器型態」的Java虛擬機器器,變數皆存放於暫存器中,虛擬機器器的指令相對減少。
Dalvik虛擬機器器可以有多個例項,每個Android應用程式都用一個自屬的Dalvik虛擬機器器來執行,讓系統在執行程式時可達到最佳化。Dalvik虛擬機器器並非執行Java位元組碼,而是執行一種稱為.dex格式的檔案。
硬體抽像層(HAL)
Android的硬體抽像層是能以封閉源碼形式提供硬體驅動模組。HAL的目的是為了把Android framework與Linux kernel隔開,讓Android不至過度依賴Linux kernel,以達成「核心獨立」(kernel independent)的概念,也讓Android framework的開發能在不考量驅動程式實作的前提下進行發展。HAL stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函式,並由Android runtime向HAL取得stub的操作,再回撥這些操作函式。HAL里包含了許多的stub(代理人)。Runtime只要說明「型別」,即module ID,就可以取得操作函式。
程式語言
Android是執行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux裏支援的功能,Android大都沒有支援,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,Android 並沒有使用者層驅動(user space driver)這種東西。所有的驅動還是在核心空間中,並以 HAL 隔開版權問題。bionic/libc/kernel/ 並非標準的核心表頭檔(kernel header files)。Android的核心表頭檔是利用工具由Linux核心的表頭檔所產生的,這樣做是為了保留常數、資料結構與巨集。Android的內核基於Linux,除了內核之外,則是中介層、資料庫元和用C/C++編寫的API以及應用程式框架。Android的應用程式通常以Java資料庫元為基礎編寫,執行程式時,應用程式的代碼會被即時轉變為Dalvik dex-code (Dalvik Executable),然後Android作業系統通過使用即時編譯的Dalvik虛擬機來將其執行。
目前Android的Linux kernel控制包括安全、記憶體管理、行程管理、網路堆疊、驅動程式模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。
專利糾紛
《PC世界》雜誌網站2011年9月22日報導,Android已捲入1000多件專利訴訟。2011年8月,Google斥資125億美元收購摩托羅拉行動(Motorola Mobility)及其擁有的約2.45萬份專利組合。命名由來
Android一詞最早出現於法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在 1886 年發表的科幻小說《未來夏娃》(L'Ève future)中。他將外表像人的機器人取作 Android。Android標誌
Android是一個全身綠色的機器人,顏色採用了PMS 376C和RGB中十六進制的#A4C639來繪製,這是Android作業系統的品牌象徵。有時候,它會以純文字的標誌展示。Android的標誌是由Ascender 公司設計的,其中的文字使用了Ascender公司專門製作的稱之為「Google Droid字型」的字型
沒有留言:
張貼留言