Android(讀音:['ændrɔid])是一個以Linux為基礎的半開放原始碼作業系統,主要用於行動設備,由Google和開放手持設備聯盟開發與領導。
Android 系統最初由安迪·魯賓(Andy Rubin)製作[3],最初主要支援手機。2005年8月17日被Google收購。[4]2007年11月5日,Google與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統並生產搭載Android的智慧型手機[5][6][7][8],並逐漸拓展到平板電腦及其他領域上[9]。隨後,谷歌公司以Apache免費開源許可證的授權方式,發佈了Android的源代碼[10]。同時,一個負責進一步發展和維護Android操作系統的Android開源項目也被建立(AOSP)。[11]
Android的內核基於Linux,除了內核之外,則是中介層、資料庫元和用C/C++編寫的API以及應用程式框架。Android的應用程式通常以Java資料庫元為基礎編寫,運行程式時,應用程式的代碼會被即時轉變為Dalvik dex-code (Dalvik Executable),然後Android操作系統通過使用即時編譯的Dalvik虛擬機來將其運行。[12]
除了開放手持設備聯盟之外,Android還擁有許多由全球各地開發者組成的開源社區來專門負責開發Android應用程式和第三方Android操作系統來延長和擴展Android的功能和性能。[13]截止至2011年10月,Android Market(現為Google Play)上擁有超過30萬個認證的應用程式,Android Market的應用程式下載量也在2011年12月達到100億次[14][15]。由於Android是開放的,因此它還可以通過第三方網站來下載安裝Google Play Store上所沒有的應用程式。
2010年末數據顯示,僅正式推出兩年的作業系統的Android在市場佔有率上已經超越稱霸十年的諾基亞Symbian系統[16][17] 。2011年8月,Android操作系統在全球智能手機操作系統的市場佔有率已達48%,成為全球第一大智能手機操作系統。[18]
Android是一個全身綠色的機器人,綠色也是Android的標誌。顏色採用了PMS 376C和RGB中十六進制的#A4C639來繪製,這是Android操作系統的品牌象徵[20]。有時候,它們還會使用純文字的Logo。[21]
同年,魯賓為Android科技公司花光了所有的錢。就在這時,史蒂夫·帕爾曼(Steve Perlman)遞給了魯賓一個信封,在裡面裝有1萬美金的現金,並且帕爾曼並不是以投資的方式給魯賓這筆錢,因為他拒絕了魯賓給他的股份。[27]
2006年12月,美國「華爾街日報」和英國BBC電視台報導了谷歌有可能進入移動領域的傳聞,谷歌公司有可能推廣移動領域下的各種穀歌服務,並且將推出一款名為谷歌手機的自主品牌手機。另有傳聞指出,按照谷歌的作風,將有可能呈現出新的手機製造商和運營商模式。
2007年9月,谷歌提交了多項移動領域的專利申請。但並沒有人知道谷歌將會推出的是一款名為Android的手機操作系統,更多的猜測是谷歌會推出一款像iPhone一樣的自主品牌手機系列。[28][29][30]
2008年12月9日,新一批成員加入開放手持設備聯盟,包括ARM、華為、索尼愛立信等公司。[31][32]
Android操作系統是完全免費開源的,任何廠商都可以不經過谷歌和開放手持設備聯盟的授權隨意使用Android操作系統,但是製造商不能隨意 地在自己的產品上使用Google的標誌和谷歌的應用程式,例如Google Play Store等,除非谷歌證明其生產的產品設備符合谷歌兼容性定義文件(CDD),這樣才能在手機上預裝Google Play Store、Gmail等應用程式,並且獲得CDD的手機廠商也可以在其生產的手機上印上「With Google」的標誌[38]。
2010年2月3日,由於谷歌在Android內核開發方面和Linux社區方面開發的不同步,Linux核心開發者Greg Kroah-Hartman將Android的驅動程式從Linux核心「狀態樹」(「staging tree」)上除去。[41]2010 年4月,谷歌宣佈將派遣2名開發人員加入Linux內核社區,以便重返Linux內核。2010年9月,Linux內核開發者Rafael J. Wysocki添加了一個修復程式,使得Android的「wakelocks」可以輕鬆地與主線Linux內核合併。2011年,Linus Torvalds說:「Android的內核和Linux的內核將最終回歸到一起,但可能不會是4-5年。」
Android操作系統大多搭載在使用了ARM架構的硬體設備上。但是同樣也有支援X86架構的Android操作系統,比如谷歌公司的Google TV就是使用一個X86版本特別定製的Android操作系統。
同樣,蘋果公司的iOS設備,比如iPhone、iPod Touch以及iPad產品都可以安裝Android操作系統,並且可以通過雙系統啟動工具OpeniBoot或者iDroid來運行Android操作系統。微軟的Windows Mobile產品也一樣可以。
世界上第一台真正意義上使用Android操作系統的設備是2008年10月22日發佈的HTC Dream。
世界上第一台搭載了Android 4.0操作系統的平板電腦是由中國艾諾公司(Ainovo)生產的Novo 7。
Android可以像用電腦上網一樣,使用任何服務[42]。Android對手有蘋果公司的iOS作業系統及Microsoft的Windows Phone 7及RIM使用的BlackBerry OS系統。[43]
例如開發者可以通過Android NDK(Android Native開發包)使用C語言或者C++語言來作為編程語言開發應用程式。同時谷歌還推出了適合初學者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,谷歌公司還推出了Google App Inventor開發工具,該開發工具可以快速地構建應用程式,方便新手開發者。
2009年2月,Google推出Android Market線上應用程式商店,用戶可在該平台網頁尋找、購買、下載及評級使用手機應用程式及其他內容[44]。 第三方軟體開發商和自由開發者則可以通過Android Market發佈其開發的應用程式。截止至2011年10月,Android Market上已有超過30萬個應用程式,並且在2011年12月,Android Market上的應用程式下載量超過100億次。同時,全球已有1.3億台Android設備在Android Market即現在的Google Play上下載過軟體。
只有通過谷歌公司許可並且認證的廠家才能在其產品設備上安裝谷歌服務框架和Google Play。同時受到部分地區和國家政策的影響,谷歌根據部分地區和國家的政策對Google Play上的內容進行了過濾,因此各地區和國家看到的內容不一樣。此外,受到部分地區和國家的電信運營商的影響,Google Play在部分地區和國家可能不可使用。
Google Play™內的付費程式在許多國家與地區內提供,如美國、英國、瑞典、德國、斯里蘭卡、泰國、越南、香港、台灣[45]等。[46]由於受到谷歌退出中國事件影響,目前Google Play的服務還沒有擴展到中國大陸地區,但大陸用戶仍可通過國際信用卡和相關的免費軟體來完成購買。需要注意的是,通過這種方法購買的軟體可能不會得到當地承認的發票(Invoice)。
除了谷歌的Google Play之外,還有其他公司的應用程式市場,如亞馬遜公司的Amazon Appstore[47],它們都提供在線的APK程式的安裝和下載。
2010年8月,卡巴斯基病毒實驗室報告稱發現了Android操作系統上首個木馬程式,並將其命名為「Trojan-SMS.AndroidOS.FakePlayer.a」[49],這是一個通過簡訊方式感染手機的木馬,並且已經感染了一定數量的Android設備。除了簡訊感染方式,這些Android木馬還可以偽裝成一些主流的應用程式,並且還可以隱藏在一些正規的應用程式之中[50][51]。
儘管谷歌公司通過定期的檢查撤除這些存在與 Google Play 上的惡意程式和病毒,但是這並不能完全阻止其他病毒通過第三方網路的方式產生並且傳播[52]。
目前Android操作系統上已經擁有防病毒程式來防止手機中毒,例如 F-Secure、Kaspersky、Trend Micro、Symantec 等防護軟體也已經發佈了Android版本。
除此之外,因受防火長城干擾,在中國大陸使用Google應用服務(包括Market)有時會出現無法連線的情況,需開啟VPN或破解Root權限後修改Hosts檔案。正因為這樣,不少人只能被迫使用第三方市場。
2010年5月的數據顯示,Android操作系統在2010年第一季度的銷量超過了對手iOS平台,成為美國最大的智能手機操作系統。
根據本土市場研究公司ComScore的數據顯示,2009年11月時,Android在美國的智能手機操作系統市場的佔有率為5.2%[58],在2010年2月時,這個數字變成了9.0%,而在2010年第三季度末時,Android已經佔據了美國市場的21.4%的份額[59]。截止至2011年6月,谷歌表示,每天通過谷歌服務器激活的Android設備達到了55萬台[60],並且以每週4.4%的速度增長[61]。2011年8月1日,Canalys的數據顯示,Android已佔據美國48%的智能手機市場佔有率[62]。2011年10月13日,谷歌表示,全球市場上有1.9億台Android設備通過谷歌認證[63],而在2011年11月16日,全球市場上已有2億台Android設備通過谷歌認證[64]。但是,搭載Android操作系統的平板電腦卻只有1.9%的份額,只有380萬Android蜂巢平板被賣出,遠遠低於蘋果公司的iPad的銷量。[65]
另外,Android操作系統還有兩個內部版本,它們分別是:鐵臂阿童木(Astro)和發條機器人(Bender),在這兩個版本之後,谷歌為了避免商標問題,將Android操作系統的代號由機器人轉變為了現在的甜點。[67]
由於Android平台高度開放性,但對軟體升級架構欠缺規範,廠商無法保證對其產品提供最新版軟體更新,令產品壽命週期大幅縮短。這導致Android產品往往因新版軟體的硬體要求過高,或廠商拒絕支援而無法更新,衍生俗稱「孤兒機」問題。
View等同於J2ME的Displayable,程式人員可以透過View類別與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於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。
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 stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函數,並由Android runtime向HAL取得stub的operations,再callback這些操作函數。HAL裡包含了許多的stub(代理人)。Runtime 只要說明「類型」,即module ID,就可以取得操作函數。
目前Android的Linux kernel控制包括安全、記憶體管理、進程管理、網路堆疊、驅動程式模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。
Android 系統最初由安迪·魯賓(Andy Rubin)製作[3],最初主要支援手機。2005年8月17日被Google收購。[4]2007年11月5日,Google與84家硬體製造商、軟體開發商及電信營運商組成開放手持設備聯盟(Open Handset Alliance)來共同研發改良Android系統並生產搭載Android的智慧型手機[5][6][7][8],並逐漸拓展到平板電腦及其他領域上[9]。隨後,谷歌公司以Apache免費開源許可證的授權方式,發佈了Android的源代碼[10]。同時,一個負責進一步發展和維護Android操作系統的Android開源項目也被建立(AOSP)。[11]
Android的內核基於Linux,除了內核之外,則是中介層、資料庫元和用C/C++編寫的API以及應用程式框架。Android的應用程式通常以Java資料庫元為基礎編寫,運行程式時,應用程式的代碼會被即時轉變為Dalvik dex-code (Dalvik Executable),然後Android操作系統通過使用即時編譯的Dalvik虛擬機來將其運行。[12]
除了開放手持設備聯盟之外,Android還擁有許多由全球各地開發者組成的開源社區來專門負責開發Android應用程式和第三方Android操作系統來延長和擴展Android的功能和性能。[13]截止至2011年10月,Android Market(現為Google Play)上擁有超過30萬個認證的應用程式,Android Market的應用程式下載量也在2011年12月達到100億次[14][15]。由於Android是開放的,因此它還可以通過第三方網站來下載安裝Google Play Store上所沒有的應用程式。
2010年末數據顯示,僅正式推出兩年的作業系統的Android在市場佔有率上已經超越稱霸十年的諾基亞Symbian系統[16][17] 。2011年8月,Android操作系統在全球智能手機操作系統的市場佔有率已達48%,成為全球第一大智能手機操作系統。[18]
目錄 |
命名由來
Android一詞最早出現於法國作家利爾亞當(Auguste Villiers de l'Isle-Adam)在 1886 年發表的科幻小說《未來夏娃》(L'Ève future)中。他將外表像人的機器人取作 Android。Logo來源
Android的Logo是由 Ascender 公司設計的。其中的文字使用了Ascender公司專門製作的稱之為「谷歌Droid字體」的字體[19]。Android是一個全身綠色的機器人,綠色也是Android的標誌。顏色採用了PMS 376C和RGB中十六進制的#A4C639來繪製,這是Android操作系統的品牌象徵[20]。有時候,它們還會使用純文字的Logo。[21]
歷史
成立
2003年10月,有「Android之父」之稱的安迪·魯賓(Andy Rubin)[22]在美國加利福利亞州的帕洛阿爾托建立了Android科技公司(Android Inc.),並與利奇·米納爾(Rich Miner)[23] 、尼克·席爾斯(Nick Sears)[24]、克里斯·懷特(Chris White)[25]共同發展這家公司。談到建立Android科技公司的原因,魯賓說:「聰明的移動設備能更好的意識到用戶的愛好和要求」[26]。儘管Android科技公司的創始人和員工過去都具有各自的科技成就,但是Android科技公司的經營只顯露出它在手機軟體的方面。同年,魯賓為Android科技公司花光了所有的錢。就在這時,史蒂夫·帕爾曼(Steve Perlman)遞給了魯賓一個信封,在裡面裝有1萬美金的現金,並且帕爾曼並不是以投資的方式給魯賓這筆錢,因為他拒絕了魯賓給他的股份。[27]
谷歌的收購
2005年8月17日,谷歌公司收購了Android科技公司,Android科技公司成為谷歌公司旗下的一部分,包括米奇·米納爾、克里斯·懷特 等所擁有的全資子公司,所有Android科技公司的員工都被併入谷歌公司。當時,沒有人知道谷歌公司為什麼作出這項收購,有許多的猜測,後來證明谷歌正 是藉助此次收購正式進入移動領域。收購後的發展
在谷歌公司,魯賓領導著一個負責開發基於Linux內核移動操作系統的團隊,這個開發項目便是Android操作系統。谷歌公司的合作平台為 Android提供了廣闊的市場,谷歌公司給予各大硬體製造商、軟體開發商一個靈活可靠的系統升級承諾,並保證將給予它們最新版本的操作系統。2006年12月,美國「華爾街日報」和英國BBC電視台報導了谷歌有可能進入移動領域的傳聞,谷歌公司有可能推廣移動領域下的各種穀歌服務,並且將推出一款名為谷歌手機的自主品牌手機。另有傳聞指出,按照谷歌的作風,將有可能呈現出新的手機製造商和運營商模式。
2007年9月,谷歌提交了多項移動領域的專利申請。但並沒有人知道谷歌將會推出的是一款名為Android的手機操作系統,更多的猜測是谷歌會推出一款像iPhone一樣的自主品牌手機系列。[28][29][30]
開放手持設備聯盟
2008年12月9日,新一批成員加入開放手持設備聯盟,包括ARM、華為、索尼愛立信等公司。[31][32]
許可證
Android操作系統使用開放免費源代碼許可證,一切源代碼都是公開免費[33] 的。谷歌對Android所使用的Linux內核依據Apache開源條款2.0中所規定的內容進行了修改,[34][35][36][37]包 括添加手機網路和電話協議棧等手機所必需的功能,使它們能更好的在移動設備上運行,並且根據第二版GNU條款中所規定的內容對修改的Linux內核信息公 佈。谷歌也不斷發佈問卷和開放修改清單、更新情況和源代碼來讓任何人看到並且提出他們的意見和評論,以便按照用戶的要求改進Android操作系統。Android操作系統是完全免費開源的,任何廠商都可以不經過谷歌和開放手持設備聯盟的授權隨意使用Android操作系統,但是製造商不能隨意 地在自己的產品上使用Google的標誌和谷歌的應用程式,例如Google Play Store等,除非谷歌證明其生產的產品設備符合谷歌兼容性定義文件(CDD),這樣才能在手機上預裝Google Play Store、Gmail等應用程式,並且獲得CDD的手機廠商也可以在其生產的手機上印上「With Google」的標誌[38]。
系統設計
Linux內核
Android操作系統的內核屬於Linux內核的一個分支,具有典型的Linux週期和功能,[39]除此之外,谷歌公司為了能讓Linux在移動設備上良好的運行,對其進行了修改和擴充。Android去除了Linux中的本地X Window System,也不支援標準的GNU庫,這使得Linux平台上的應用程式移植到Android平台上變得困難[40]。2008年,Patrick Brady於Google I/O演講「Anatomy & Physiology of an Android」,並提出的Android HAL架構圖。HAL以*.so 檔的形式存在,可以把Android framework與Linux kernel隔開,這種中介層的方式使得Android能在移動設備上獲得更高的執行效率。這種獨特的系統結構被Linux核心開發者Greg Kroah-Hartman和其他內核維護者稱讚。谷歌還在Android的內核中加入了自己開發製作的一個名為「wakelocks」的移動設備電源管 理功能,該功能用於管理移動設備的電池性能,但是該功能並沒有被加入到Linux內核的主線開放和維護中,因為Linux內核維護者認為谷歌沒有向他們展 示這個功能的意圖和代碼。2010年2月3日,由於谷歌在Android內核開發方面和Linux社區方面開發的不同步,Linux核心開發者Greg Kroah-Hartman將Android的驅動程式從Linux核心「狀態樹」(「staging tree」)上除去。[41]2010 年4月,谷歌宣佈將派遣2名開發人員加入Linux內核社區,以便重返Linux內核。2010年9月,Linux內核開發者Rafael J. Wysocki添加了一個修復程式,使得Android的「wakelocks」可以輕鬆地與主線Linux內核合併。2011年,Linus Torvalds說:「Android的內核和Linux的內核將最終回歸到一起,但可能不會是4-5年。」
特點
當前的Android操作系統具有以下幾個功能:- 顯示佈局
- Android操作系統支援更大的解析度,VGA,2D顯示,3D顯示都給予OpenGL ES 2.0標準規格,並且支援傳統的智能手機。
- 數據存儲
- Android操作系統內置SQLite小型關聯式資料庫管理系統來負責存儲數據。
- 信息
- 作為原設計給手機使用的作業系統,Android操作系統原生支援簡訊和郵件,並且支援所有的雲端信息和服務器信息。
- 語言
- Android操作系統支援多語言。
- 瀏覽器
- Android操作系統中內置的網頁瀏覽器基於WebKit內核,並且採用了Chrome V8引擎。在Android 4.0內置的瀏覽器測試中,HTML5和Acid3故障處理中均獲得了滿分,並且於2.2版及之後能原生支援Flash。
- 支援Java
- 雖然Android操作系統中的應用程式大部分都是由Java編寫的,但是Android卻是以轉換為Dalvik executables的文件在Dalvik虛擬機上運行的。由於Android中並不自帶Java虛擬機,因此無法直接運行Java程式。不過Android平台上提供了多個Java虛擬機供用戶下載使用,安裝了Java虛擬機的Android系統可以運行J2ME的程式。
- 媒體支援
- Android操作系統本身支援以下格式的音頻/視頻/圖片媒體:WebM、H.263, H.264 (in 3GP or MP4 container)、MPEG-4 SP、AMR, AMR-WB (in 3GP container)、AAC, HE-AAC (in MP4 or 3GP container)、MP3、MIDI、Ogg Vorbis、FLAC、WAV、JPEG、PNG、GIF、BMP。如果用戶需要播放更多格式的媒體,可以安裝其他第三方應用程式。
- 流媒體支援
- Android操作系統支援RTP/RTSP(3GPP PSS, ISMA)的流媒體以及(HTML5
- 硬體支援
- Android操作系統支援識別並且使用視頻/照片攝像頭,多點電容/電阻觸摸屏,GPS,加速計,陀螺儀,氣壓計,磁強計,鍵盤,鼠標,USB Disk,專用的遊戲控制器,體感控制器,遊戲手柄,藍牙設備,無線設備,感應和壓力感測器,溫度計,加速2D位位塊傳輸(硬體方向,縮放,像素格式轉 換)和3D圖形加速。
- 多點觸控
- Android支援原生的多點觸摸,在最初的HTC Hero手機上即有這個功能。該功能是核心級別(為了避免對蘋果公司的觸摸屏技術造成侵權)。
- 藍牙
- Android支援A2DP,AVRCP,發送文件(OPP),訪問電話簿(PBAP),語音撥號和發送手機之間的聯繫。同時支援鍵盤,滑鼠和操縱桿(HID)。
- 多工處理
- Android操作系統支援原生的多工處理。
- 語音功能
- 除了支援普通的電話通話之外,Android操作系統從最初的版本開始就支援使用語音操作來使用Google進行網頁搜索等功能。而從Android OS v2.2開始,語音功能還可以用來輸入文字、語音導航等功能。
- 無線共享功能
- Android操作系統支援用戶使用本機充當「無線路由器」,並且將本機的網路共享給其他手機,其他機器只需要通過WiFi尋找到共享的無線熱點,就可以上網。而在Android OS v2.2版本之前的操作系統則需要通過第三方應用或者其他定製版系統來實現這個功能。
- 截圖功能
- 從Android OS v4.0版本開始,Android操作系統便支援截圖功能,該功能允許用戶直接抓取手機螢幕上的任何畫面,用戶還可以通過編輯功能對截圖進行處理,還可以 通過藍牙/E-mail/微博/共享等方式發送給其他用戶或者上傳到網路上,也可以拷貝到電腦中。
硬體支援
Android操作系統大多搭載在使用了ARM架構的硬體設備上。但是同樣也有支援X86架構的Android操作系統,比如谷歌公司的Google TV就是使用一個X86版本特別定製的Android操作系統。
同樣,蘋果公司的iOS設備,比如iPhone、iPod Touch以及iPad產品都可以安裝Android操作系統,並且可以通過雙系統啟動工具OpeniBoot或者iDroid來運行Android操作系統。微軟的Windows Mobile產品也一樣可以。
世界上第一台真正意義上使用Android操作系統的設備是2008年10月22日發佈的HTC Dream。
世界上第一台搭載了Android 4.0操作系統的平板電腦是由中國艾諾公司(Ainovo)生產的Novo 7。
Android可以像用電腦上網一樣,使用任何服務[42]。Android對手有蘋果公司的iOS作業系統及Microsoft的Windows Phone 7及RIM使用的BlackBerry OS系統。[43]
應用程式
早期的Android應用程式開發,通常通過Android SDK(Android軟體開發包)下使用Java作為編程語言來開發應用程式,但通過不同的軟體開發包,則使用的編程語言也不同。例如開發者可以通過Android NDK(Android Native開發包)使用C語言或者C++語言來作為編程語言開發應用程式。同時谷歌還推出了適合初學者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,谷歌公司還推出了Google App Inventor開發工具,該開發工具可以快速地構建應用程式,方便新手開發者。
Google Play
2009年2月,Google推出Android Market線上應用程式商店,用戶可在該平台網頁尋找、購買、下載及評級使用手機應用程式及其他內容[44]。 第三方軟體開發商和自由開發者則可以通過Android Market發佈其開發的應用程式。截止至2011年10月,Android Market上已有超過30萬個應用程式,並且在2011年12月,Android Market上的應用程式下載量超過100億次。同時,全球已有1.3億台Android設備在Android Market即現在的Google Play上下載過軟體。
只有通過谷歌公司許可並且認證的廠家才能在其產品設備上安裝谷歌服務框架和Google Play。同時受到部分地區和國家政策的影響,谷歌根據部分地區和國家的政策對Google Play上的內容進行了過濾,因此各地區和國家看到的內容不一樣。此外,受到部分地區和國家的電信運營商的影響,Google Play在部分地區和國家可能不可使用。
Google Play™內的付費程式在許多國家與地區內提供,如美國、英國、瑞典、德國、斯里蘭卡、泰國、越南、香港、台灣[45]等。[46]由於受到谷歌退出中國事件影響,目前Google Play的服務還沒有擴展到中國大陸地區,但大陸用戶仍可通過國際信用卡和相關的免費軟體來完成購買。需要注意的是,通過這種方法購買的軟體可能不會得到當地承認的發票(Invoice)。
除了谷歌的Google Play之外,還有其他公司的應用程式市場,如亞馬遜公司的Amazon Appstore[47],它們都提供在線的APK程式的安裝和下載。
應用程式安全機制
Android操作系統使用了沙盤機制,所有的應用程式都會先被簡單地解包到沙盤中進行檢查,並且將應用程式所需的權限提交給系統,並且將其所需權 限以列表的形式展現出來,供用戶查看。例如一個第三方瀏覽器需要「鏈接網路」的權限,或者一些軟體需要撥打電話,發送簡訊等權限。用戶可以根據權限來考慮 自己是否需要安裝,用戶只有在同意了應用程式權限之後,才能進行安裝[48]。惡意程式與病毒
由於Android操作系統的開放和自由性,一些惡意程式和病毒也隨之出現。2010年8月,卡巴斯基病毒實驗室報告稱發現了Android操作系統上首個木馬程式,並將其命名為「Trojan-SMS.AndroidOS.FakePlayer.a」[49],這是一個通過簡訊方式感染手機的木馬,並且已經感染了一定數量的Android設備。除了簡訊感染方式,這些Android木馬還可以偽裝成一些主流的應用程式,並且還可以隱藏在一些正規的應用程式之中[50][51]。
儘管谷歌公司通過定期的檢查撤除這些存在與 Google Play 上的惡意程式和病毒,但是這並不能完全阻止其他病毒通過第三方網路的方式產生並且傳播[52]。
目前Android操作系統上已經擁有防病毒程式來防止手機中毒,例如 F-Secure、Kaspersky、Trend Micro、Symantec 等防護軟體也已經發佈了Android版本。
盜版問題
由於第三方市場流行,Android用戶大多不願意付費購買應用,轉而直接下載已被駭客破解的軟體檔,對應用開發者造成嚴重損失。有遊戲開發者的針對其作品的調查指出,97%亞洲玩家、70%歐洲玩家及47%北美玩家都下載盜版[53]。SEAndroid
美國國家安全局在2012年1月發佈SEAndroid開源項目和程式碼,使Android系統支援強制存取控制(Mandatory Access Control)以增加系統安全性。[54] [55]在中國大陸的特殊情況
目前在中國大陸售賣的裝有Android作業系統的行貨手機,幾乎所有廠商,包括摩托羅拉、三星、HTC等,均把Google服務包完全刪除,中國大陸用戶需要自行重新刷機或自行破解Root權限後刷寫Google服務包才能使用Google相關的應用服務。但裝有Android系統的水貨手機,譬如HTC並沒有在中國大陸正式發售過的HTC Legend等機型,則不受此影響。除此之外,因受防火長城干擾,在中國大陸使用Google應用服務(包括Market)有時會出現無法連線的情況,需開啟VPN或破解Root權限後修改Hosts檔案。正因為這樣,不少人只能被迫使用第三方市場。
市場使用情況
市場佔有率
2009年第二季度,根據市場研究公司Canalys的數據顯示,Android佔據全球智能手機操作系統市場2.8%的份額[56], 這個數字在2010年第四季度的全球份額中增長到了33%,Android操作系統也因此擊敗了諾基亞的Symbian系統成為了全球第一大智能手機操作 系統。2011年第三季度,根據市場調研公司Gartner的數據顯示,Android操作系統在全球智能手機操作系統中的份額已經過半,達到了 52.5%,全球有一半的智能手機使用Android操作系統[57]。2010年5月的數據顯示,Android操作系統在2010年第一季度的銷量超過了對手iOS平台,成為美國最大的智能手機操作系統。
根據本土市場研究公司ComScore的數據顯示,2009年11月時,Android在美國的智能手機操作系統市場的佔有率為5.2%[58],在2010年2月時,這個數字變成了9.0%,而在2010年第三季度末時,Android已經佔據了美國市場的21.4%的份額[59]。截止至2011年6月,谷歌表示,每天通過谷歌服務器激活的Android設備達到了55萬台[60],並且以每週4.4%的速度增長[61]。2011年8月1日,Canalys的數據顯示,Android已佔據美國48%的智能手機市場佔有率[62]。2011年10月13日,谷歌表示,全球市場上有1.9億台Android設備通過谷歌認證[63],而在2011年11月16日,全球市場上已有2億台Android設備通過谷歌認證[64]。但是,搭載Android操作系統的平板電腦卻只有1.9%的份額,只有380萬Android蜂巢平板被賣出,遠遠低於蘋果公司的iPad的銷量。[65]
用戶使用系統版本比例
截止至2012年4月2日,不同的Android操作系統版本的用戶比例。[66]- 版本
版本名稱 | API level | % |
---|---|---|
4.0.x 冰淇淋三明治 | 14-15 | 2.9% |
3.X.x 蜂巢 | 11-13 | 3.3% |
2.3.x 薑餅 | 9-10 | 63.7% |
2.2 凍酸奶 | 8 | 23.1% |
2.1 閃電泡芙 | 7 | 6.0% |
1.6 甜甜圈 | 4 | 0.7% |
1.5 紙杯蛋糕 | 3 | 0.3% |
版本
由於Android平台高度開放性,但對軟體升級架構欠缺規範,廠商無法保證對其產品提供最新版軟體更新,令產品壽命週期大幅縮短。這導致Android產品往往因新版軟體的硬體要求過高,或廠商拒絕支援而無法更新,衍生俗稱「孤兒機」問題。
發佈
1.5 (Cupcake) 基於Linux Kernel 2.6.27 |
2009年4月30日,官方1.5版本(Cupcake 紙杯蛋糕)的Android發佈。[70][71]
[72]主要的更新如下: |
---|---|
1.6 (Donut) 基於Linux Kernel 2.6.29 |
2009年9月15日,1.6(Donut 甜甜圈)版本軟體開發套件發佈。[74][75]主要的更新如下: |
2.0/2.0.1/2.1 (Eclair) 基於Linux Kernel 2.6.29 |
2009年10月26日,2.0(Eclair 鬆餅)版本軟體開發套件發佈。[77]主要的更新如下:[78]
|
2.2/2.2.1 (Froyo) 基於Linux Kernel 2.6.32 |
2010年5月20日,2.2(Froyo 凍酸奶)版本軟體開發套件發佈。[79]主要的更新如下:
|
2.3 (Gingerbread) 基於Linux Kernel 2.6.35 |
2010年12月7日,2.3(Gingerbread 薑餅)版本軟體開發套件發佈。[87]主要的更新如下: |
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 冰淇淋三明治)版本主要更新如下:
|
5.0 (Jelly Bean) |
|
6.0 (Key Lime Pie) |
*預計於2013年發佈 |
系統架構
應用程式
Android以Linux為核心的Android行動平台,使用Java作為程式語言,使介面到 功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個Activity類別負責建立視窗,一個活動中的Activity就 是在foreground(前景)模式,背景執行的程式叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到複數 程式同時執行的效果。如果執行中的Activity全部畫面被其他Activity取代時,該Activity便被停止,甚至被系統清除。View等同於J2ME的Displayable,程式人員可以透過View類別與「XML layout」檔將UI放置在視窗上,Android 1.5的版本可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計layout,HTC的Android Hero手機即含有大量的widget。至於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格式的檔案。
硬體抽像層
Android的硬體抽像層是能以封閉源碼形式提供硬體驅動模組。HAL的目的是為了把Android framework與Linux kernel隔開,讓Android不至過度依賴Linux kernel,以達成kernel independent的概念,也讓Android framework的開發能在不考量驅動程式實作的前提下進行發展。HAL stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函數,並由Android runtime向HAL取得stub的operations,再callback這些操作函數。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 這種東西。所有的Driver 還是在 Kernel space,並以 HAL 隔開版權問題。bionic/libc/kernel/ 並非標準的kernel header files。Android的kernel header是利用工具由Linux kernel header所產生的,這樣做是為了保留常數、資料結構與巨集。目前Android的Linux kernel控制包括安全、記憶體管理、進程管理、網路堆疊、驅動程式模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。
留言