Android

出自維基百科,自由嘅百科全書
跳去: 定向搵嘢
Android 嘅其他意思,睇 Android (搞清楚)
Android
Android機械人
Android logo (2007-2014).svg
Android 4.4 with stock launcher.png
Android 4.4 KitKat home screen
開發者 Google/開放手持設備聯盟
程式語言 C(核心)[1]C++(有啲第三方庫)、Java(用戶界面)
運作狀態 營運緊
原始碼模式 自由及開放源代碼軟件
初始版本 2008年10月21號
穩定版本 4.2.1[2] / 2012年11月27號;20個月之前 (2012-11-27)
支援平台 ARMMIPSPower Architecturex86
核心類別 整塊性核心Linux
預設UI 圖形
授權條款 Apache 2.0同埋GPLv2[3]
官方網站 android.com
Android 4.4 kitkat 智能電話
早期Android設備

Android(讀音:['ændrɔid])係一個公開源碼嘅Linux作業系統,主要用喺手提電子產品,好似有電腦功能嘅智能電話平板電腦。家陣未有劃一唐名,粵語用者,多數用番英文名Android叫佢,少數人亦會叫佢做安撞,其它華語地區(大陸同臺灣)一般叫安卓

Android呢個名,最早見於科幻小說《未來夏娃》,係法國作家利爾亞當寫嘅,一八八六年發表。佢將外表似人咁樣,就叫Android。Android操作系統,最初由Andy Rubin創辦[4],最初只係支援手機。二零零五,由Google收購注資,並重同啲手機大廠,一齊搞開放手機聯盟(Open Handset Alliance),開發改良,逐漸擴展到平板電腦同埋其他用途上面[5]

二零一零年末,Andr​​oid正式推出咗兩年,就贏咗十年霸主嘅諾基亞Symbian系統,成爲全球最受歡迎嘅智慧手機平台。用Android系統嘅手機廠商,包括HTCSamsungMotorolaLenovoLGSony Ericsson華為等。Android另一對手,iOS係得一個樣,由蘋果公司控制,Android就同佢相反,各廠商可以有唔同設計,可以遷就唔同習慣,算係針對iOS嘅弱點。

歷史[編輯]

Android早期由「Android之父」Andy Rubin創辦,Google響2005年收購成立咗只有22個月嘅高科技企業Android,展開咗短訊、搵電話、定位等業務,基於Linux嘅通用平台進入咗開發。Google公司響2007年11月5號正式公佈呢個操作系統,2008年,Patrick Brady 喺 Google I/O演講《Anatomy & Physiology of an Android》,重搞咗Andr​​oid HAL架構圖。HAL用*.so檔嘅形式存在,搞到Android framework同Linux kernel隔開。

2010年2月3號,Linux內核開發者Greg Kroah-Hartman將An​​droid嘅驅動由Linux內核「狀態樹」(staging tree)上面剷咗,Android同Linux核心開發分道揚鑣[6]

市場衝擊[編輯]

其他作業系統好似微軟Windows Mobile,手機商要同微軟畀相當於手機成本10%嘅牌照費,Android就免費開源打​,此外,手機製造商同網絡商為咗要保障收入,通常會限制用戶可以用啲咩功能同服務。Android就唔設限制,可以好似用電腦上網咁,用到好多服務[7]。Android對手有蘋果電腦嘅iOS微軟Windows PhoneRIM用嘅BlackBerry OS系統等[8]

Google Play[編輯]

內文: Google Play

2009年2月,Google推出Android Market,用戶可以喺嗰度下載手機應用程式(apps)同幫apps評分[9]

2012年3月,Android Market改名做Google Play。

版本[編輯]

Android系統差唔多每半年升級一次,每代Android系統都用甜品命名:

  • 1.5 版叫做 Cup Cake (紙杯蛋糕
  • 1.6 版叫做 Donut (冬甩
  • 2.0 版叫做 Eclair (法式泡芙
  • 2.1 版叫做 Eclair (法式泡芙)
  • 2.2 版叫做 Froyo (冰凍乳酪
  • 2.3 版叫做 Gingerbread (薑餅
  • 3.0 版叫做 Honeycomb (蜂巢
  • 4.0 版叫做 Ice Cream Sandwich(雪糕三文治
  • 4.1 版叫做 Jelly Bean (啫喱豆
  • 4.2 版叫做 Jelly Bean (啫喱豆)
  • 4.3 版叫做 Jelly Bean (啫喱豆)
  • 4.4 版叫做 KitKat (KitKat朱古力)

以 C D E F G H I J 字頭順序排列。

1.5
  • 能夠通過攝像機模式記錄同觀看視頻
  • 從手機上傳視頻到YouTube同圖片到Picasa
  • 支持藍牙 A2DP
  • 能夠一定距離內自動連接到藍牙耳機
  • 動畫畫面嘅切換
1.6
  • 改進使用軟件市場嘅體驗
  • 讓從主屏幕搜索書籤,歷史,聯繫人
  • 支持320*240屏幕解像度
  • 改進搜索同相機應用嘅速度
  • 更新語音搜索,加快撥打畀聯繫人
  • 更爽嘅本機應用程式能力
2.1
(Éclair)
  • 優化硬件嘅速度
  • 支持內置閃光燈
  • 改良用戶界面
  • 支持更多屏幕尺寸同解像度
  • 新聯絡人名單
  • 新瀏覽器嘅用戶界面
  • 支持HTML5
  • 改進虛擬鍵盤
  • 動態壁紙
2.2
(Froyo)
  • 優化Android操作系統嘅速度同性能
  • 支持Adobe Flash 10.1
  • 支持應用程序安裝到記憶卡
  • 應用程式自動批次更新
  • 增加對微軟 Exchange支持
  • 語音撥號同通過藍牙共享聯繫人
  • 手機可發放wi fi信號,成為一個hotspot
2.3
(Gingerbread)
基於Linux Kernel 2.6.35
2010年12月7號,2.3(Gingerbread)版本軟體開發套件發佈[10]。主要更新有:
  • 修補​​UI[11]
  • 支援更大屏幕尺寸同埋解像度(WXGA及更高)
  • 系統級複製黏貼
  • 重新設計嘅多點觸摸屏幕鍵盤
  • 原生支持多個鏡頭(用於視頻通話等)同更多傳感器(陀螺儀、氣壓計等)
  • 電話簿整合Internet Call功能
  • 支援近場通信NFC
  • 強化電源、應用程式管理功能
  • 新增下載管理員
  • 優化遊戲開發支援
  • 多媒體音效強化
  • YAFFS轉換到ext4文件系統
  • 開放了屏幕截圖功能
  • 對黑色及白色的還原更加真實
3.0.1/3.1
(Honeycomb)
* 2011年2月2號,3.0(Honeycomb)版本主要更新如下:
  • 淨係畀平板電腦用
  • Google eBooks上提供數百萬本書
  • 支援平板電腦大螢幕、高解析度
  • 新版Gmail
  • Google Talk視訊功能
  • 3D加速處理
  • 網頁版Market(Web store)詳細分類顯示,依個人Android分別設定安裝應用程式
  • 新嘅短消息通知功能
  • 專為平板電腦設計嘅用戶界面(重新設計嘅通知列同埋系統列)
  • 加強多工處理嘅介面
  • 重新設計適用於大螢幕嘅鍵盤及複製貼上功能
  • 多個標籤嘅瀏覽器以及私密瀏覽模式
  • 快速切換各種功能嘅相機
  • 增強嘅圖庫同埋快速捲動嘅聯絡人介面
  • 更有效率嘅Email介面
  • 支援多核心處理器
4.0
(Ice Cream Sandwich)
4.1
(Jelly Bean)
4.2
(Jelly Bean)

應用[編輯]

目前,中國移動基於Android系統開發咗OPhone平台,並於OPhone2.0或以上兼容Android Market。2010年9月,華為推出咗全世界第一部Android2.2嘅手機IDEOS。同年10月,韓國嘅三星推出咗7寸嘅Samsung Galaxy Tab同法國嘅愛可視(Archos)推出咗10寸嘅Android 2.2嘅平板電腦。呢兩部平板電腦被譽為蘋果iPad嘅殺手,因為佢哋都有USB同Flash瀏覽網頁。

系統架構[編輯]

綠色黃色部分:中間件。 紅色部分:作業系統。]]

應用程式[編輯]

Android 用 Linux 做核心嘅 Andr​​oid 行動平台,用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嘅Andr​​oid 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格式嘅檔案。

硬體抽像層(Hardware Abstraction Layer)[編輯]

Android嘅HAL(硬體抽像層)係能夠以封閉源碼形式提供硬體驅動模組。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大都冇,包括CairoX11AlsaFFmpegGTKPango以及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 Managemeat)、程序管理(Process Management)、網絡堆疊(Network Stack)、驅動程式模型(Driver Model)等。下載Android源碼之前,要先安裝咗佢嘅構建工具Repo嚟初始化源碼。Repo係Android用來輔助Git工作嘅一個工具。

參閱[編輯]

參考[編輯]

  1. Lextrait, Vincent. The Programming Languages​​ Beacon, v10.0. 2010.January. 喺5 January 2010搵到;. 
  2. http://androidcommunity.com/android-4-2-1-jelly-bean-heads-to-aosp-20121127/
  3. Licenses. Android Open Source Project. Open Handset Alliance. . 喺2010-06-10搵到;. 
  4. Android之父Andy Rubin:生而Geek,作者:wuzhimin,本文來自《程序員》雜誌2010年9期
  5. Android開發簡介,developerWorks IBM 2009年6月08日
  6. 新浪科技. 谷歌Android被Linux內核除名. 2010年2日4. 喺2010年4月9日搵到; (中文(简体)‎). 
  7. Google手機亮相,蘋果日報2008年2月12號
  8. Android稱王扳倒不敗諾基亞,聯合新聞網2011/02/01
  9. 谷歌推出Anroid Market在線軟件平台新浪科技2008年08月29日09:31
  10. Android 2.3 Gingerbread正式登場、新功能全面睇!. 
  11. Android Team“Laser Focused”On The User Experience For Next Release.