Android
出自 MBA智库百科(https://wiki.mbalib.com/)
Android(安卓)官方網站網址:http://www.android.com/
目錄 |
Android是基於Linux開放性內核的操作系統,是Google公司在2007年11月5日公佈的手機操作系統。早期由原名為"Android"的公司開發,谷歌在2005年收購"Android.Inc"後,繼續進行對Android系統開發運營,它採用了軟體堆層(software stack,又名軟體疊層)的架構,主要分為三部分。底層Linux內核只提供基本功能,其他的應用軟體則由各公司自行開發,部分程式以Java編寫。
2011年初數據顯示,僅正式上市兩年的操作系統Android已經超越稱霸十年的塞班系統,使之躍居全球最受歡迎的智能手機平臺。現在,Android系統不但應用於智能手機,也在平板電腦市場急速擴張。採用Android系統主要廠商包括臺灣的HTC,(第一臺谷歌的手機G1由HTC生產代工)美國摩托羅拉,SE等,中國大陸廠商如:華為、中興、聯想等。
Android一詞最早出現於法國作家利爾亞當在1886年發表的科幻小說《未來夏娃》中。他將外表像人的機器起名為Android。
Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中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(Hardware Abstraction Layer、硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達成 kernel independent 的概念,也讓 Android framework 的開發能在不考量驅動程式實現的前提下進行發展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(operations),並由 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將驅動程式移到userspace,使得Linux driver 與 Linux kernel徹底分開。bionic/libc/kernel/ 並非標準的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產生的,這樣做是為了保留常數、數據結構與巨集。
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Management),程式管理(Process Management),網路堆棧(Network Stack),驅動程式模型(Driver Model)等。下載Android源碼之前,先要安裝其構建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
- 2005年,Google收購了成立僅22個月的高科技企業Android。
- 2007年11月5日,Google公司正式向外界展示Android操作系統。
- 2007年11月5日,Google與34家手機製造商、軟體開發商、電信運營商和晶元製造商共同創建開放手持設備聯盟(簡稱:OHA)。
- 2008年,Patrick Brady於Google I/O大會上提出Android HAL架構圖。
- 2008年8月18日,Android獲得美國聯邦通信委員會的批准。
- 2008年9月,Android1.0正式發佈。
- 2008年9月22日,美國運營商德國T-Mobile在紐約正式對外發佈第一款Android手機——T-Mobile G1。該款手機為臺灣巨集達電子(HTC)代工製造,是世界上第一部使用Android操作系統的手機。
- 2008年10月,全球業界都表示不看好Android操作系統,並且聲稱最多1年,Android就會被Google關閉。
- 2008年10月22日,T-Mobile G1正式發售。
- 2009年4月30日,Android1.5正式發佈。
- 2009年4月,HTC G1和HTC G2市場大賣成為僅次於iPhone的熱門機型。
- 2009年9月15日,Android1.6正式發佈。
- 2009年9月,HTC Hero G3廣受歡迎,成為全球最受歡迎的機型。
- 2009年10月28日,Android 2.0 智能手機操作系統正式發佈。
- 2009年10月,Google發佈了旗下第一款自主品牌手機:Nexus one(HTC G5)。該款手機為臺灣巨集達電子(HTC)代工製造。
- 2010年1月7日,Nexus One開始對外發售。
- 2010年2月3日,Linux內核開發者Greg Kroah-Hartman將Android的驅動程式從Linux內核“狀態樹”(“staging tree”)上除去,從此,Android與Linux開發主流將分道揚鑣。
- 2010年5月19日,Google正式對外發佈Android2.2智能操作系統。
- 2010年5月20日,Google對外正式展示了搭載Android系統的智能電視-Google TV,該電視為全球首台智能電視。
- 2010年7月1日,Google宣佈正式與雅虎、亞馬遜合作,並且在Android上推出多項Kindle服務和雅虎服務。
- 2010年7月9日,美國NDP集團調查顯示,Android系統已占據了美國移動系統市場28%的份額,全球17%的市場份額。
- 2010年9月,Android應用數量超過9萬個。
- 2010年9月21日,Google對外公佈數據,每日銷售的Android設備的新用戶數達到20萬。
- 2010年10月26日,Google宣佈Android達到第一個裡程碑:電子市場上獲得官方數字認證的Android應用數量已經達到10萬個。
- 2010年12月7日,Google正式發佈Android2.3操作系統。
- 2011年1月,Android應用數量超過20萬。
- 2011年1月,Google對外公佈數據,每日Android設備的新用戶數達到30萬。
- 2011年2月2日,Android3.0正式發佈。
- 2011年3月25日,谷歌暫停開源Android3.0,並將暫時阻止小型手機生產商使用其Android3.0“Honeycomb”系統,期限未定。
- 2011年7月,Google對外公佈數據,Android每天的新用戶達到55萬,Android設備用戶總數達1.35億。
- 2011年8月,谷歌收購摩托羅拉移動。
- 2011年9月,數據顯示,Android應用數目已經達到48萬。
- 2011年9月,Android的市場占有率達到43%。
- 1、開放性
在優勢方面,Android平臺首先就是其開放性,開發的平臺允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平臺也將很快走向成熟。
開發性對於Android的發展而言,有利於積累人氣,這裡的人氣包括消費者和廠商,而對於消費者來講,最大的受益正是豐富的軟體資源。開放的平臺也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。
- 2、掙脫運營商的束縛
在過去很長的一段時間,特別是在歐美地區,手機應用往往受到運營商制約,使用什麼功能接入什麼網路,幾乎都受到運營商的控制。自從iPhone上市,用戶可以更加方便地連接網路,運營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網路的逐步過渡和提升,手機隨意接入網路已不是運營商口中的笑談。
- 3、豐富的硬體選擇
這一點還是與Android平臺的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟體的兼容。好比你從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到iPhone上使用、聯繫人等資料更是可以方便地轉移。
- 4、不受任何限制的開發商
Android平臺提供給第三方開發商一個十分寬泛、自由的環境。因此不會受到各種條條框框的阻撓,可想而知,會有多少新穎別緻的軟體會誕生。但也有其兩面性,血腥、暴力、情色方面的程式和游戲如何控制正是留給Android難題之一。
- 5、無縫結合的Google應用
如今叱吒互聯網的Google已經走過10年度歷史。從搜索巨人到全面的互聯網滲透,Google服務如地圖、郵件、搜索等已經成為連接用戶和互聯網的重要紐帶,而Android平臺手機將無縫結合這些優秀的Google服務。
怎麼老是系統更新失敗啊