Android
- Android 嘅其他意思,睇 Android (搞清楚)
開發者 | Google/開放手持設備聯盟 |
---|---|
程式語言 | C(核心)[1]、C++(有啲第三方庫)、Java(用戶界面) |
運作狀態 | 營運緊 |
原始碼模式 | 自由同埋開放源代碼軟件 |
初始版本 | 2008年10月21號 |
穩定版本 | 8.0 / 2017年8月21號 |
支援平台 | ARM、MIPS、Power Architecture、x86 |
核心類別 | 整塊性核心(Linux) |
預設UI | 圖形 |
授權條款 | Apache 2.0同埋GPLv2[2] |
官方網站 | android.com |
Android(讀音:['ændrɔid])係一個公開源碼嘅Linux作業系統,主要用喺手提電子產品,好似有電腦功能嘅智能電話或平板電腦。家陣未有劃一唐名,粵語用者,多數用番英文名Android叫佢,少數人亦會叫佢做安撞,其它華語地區(大陸同臺灣)一般叫安卓。
Android呢個名,最早見於科幻小說《未來夏娃》,係法國作家利爾亞當寫嘅,一八八六年發表。佢將外表似人咁樣,就叫Android。Android操作系統,最初由Andy Rubin創辦[3],最初只係支援手機。二零零五年,由Google收購注資,並同啲手機大廠,一齊搞開放手機聯盟(Open Handset Alliance),開發改良,逐漸擴展到平板電腦同埋其他用途上面[4]。
二零一零年末,Android正式推出咗兩年,就贏咗十年霸主嘅諾基亞Symbian系統,成爲全球最受歡迎嘅智能手機平台。用Android系統嘅手機廠商,包括HTC、Samsung、Motorola、Lenovo、LG、Sony 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》,重搞咗Android HAL架構圖。HAL用*.so檔嘅形式存在,搞到Android framework同Linux kernel隔開。
2010年2月3號,Linux內核開發者Greg Kroah-Hartman將Android嘅驅動由Linux內核「狀態樹」(staging tree)上面剷咗,Android同Linux核心開發分道揚鑣[5]。
市場衝擊
[編輯]其他作業系統好似微軟嘅Windows Mobile,手機商要同微軟畀相當於手機成本10%嘅牌照費,Android就免費開源打,此外,手機製造商同網絡商為咗要保障收入,通常會限制用戶可以用啲咩功能同服務。Android就唔設限制,可以好似用電腦上網咁,用到好多服務[6]。Android對手有蘋果電腦嘅iOS、微軟嘅Windows Phone同RIM用嘅BlackBerry OS系統等[7]。
Google Play
[編輯]2009年2月,Google推出Android Market,用戶可以喺嗰度下載手機應用程式(apps)同幫apps評分[8]。
2012年3月,Android Market改名做Google Play。
版本
[編輯]Android系統差唔多每半年升級一次,喺版本10之前每代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朱古力)
- 5.0 版叫做 Lollipop (波板糖)
- 5.1 版叫做 Lollipop (波板糖)
- 6.0 版叫做 Marshmallow (棉花糖)
- 7.0 版叫做 Nougat (鳥結糖)
- 8.0 版叫做 Oreo (奧利奧)
- 9.0 版叫做 Pie (批)
- 10 版 (開發代號為Q)
- 11 版
以C D E F G H I J K L M N O P Q字頭順序排列。
代號 | 介紹 | 圖片 |
---|---|---|
1.5 |
|
|
1.6 |
|
|
2.1 (Éclair) |
|
|
2.2 (Froyo) |
|
|
2.3 (Gingerbread) 基於Linux Kernel 2.6.35 |
2010年12月7號,2.3(Gingerbread)版本軟體開發套件發佈[9]。主要更新有: | |
3.0.1/3.1 (Honeycomb) |
* 2011年2月2號,3.0(Honeycomb)版本主要更新如下:
|
|
4.0 (Ice Cream Sandwich) |
||
4.1 (Jelly Bean) |
||
4.2 (Jelly Bean) |
||
4.3 (Jelly Bean) |
||
4.4 (Kitkat) |
||
5.0 (Lollipop) |
||
5.1 (Lollipop) |
||
6.0 (Marshmallow) |
||
7.0 (Nougat) |
||
8.0 (Oreo) |
||
9.0 (Pie) |
||
10.0 (Q) |
應用
[編輯]中國移動基於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 做核心嘅 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 Managemeat)、程序管理(Process Management)、網絡堆疊(Network Stack)、驅動程式模型(Driver Model)等。下載Android源碼之前,要先安裝咗佢嘅構建工具Repo嚟初始化源碼。Repo係Android用來輔助Git工作嘅一個工具。
參考
[編輯]- ↑ Lextrait, Vincent (2010). "The Programming Languages Beacon, v10.0". 原著喺2012-05-30歸檔. 喺2010-01-05搵到.
{{cite web}}
: Unknown parameter|month=
ignored (help) - ↑ "Licenses". Android Open Source Project. Open Handset Alliance. 喺2010-06-10搵到.
- ↑ Android之父Andy Rubin:生而Geek 互聯網檔案館嘅歸檔,歸檔日期2011-02-03.,作者:wuzhimin,本文來自《程序員》雜誌2010年9期
- ↑ Android開發簡介,developerWorks IBM 2009年6月8號
- ↑ 新浪科技 (2010-02-04)。〈谷歌Android被Linux內核除名〉 (簡體中文)。原著喺2010-02-08歸檔。喺2010-04-09搵到。
{{cite news}}
: Cite has empty unknown parameter:|coauthors=
(help) - ↑ Google手機亮相 互聯網檔案館嘅歸檔,歸檔日期2020年3月15號,.,蘋果日報2008年2月12號
- ↑ Android稱王扳倒不敗諾基亞,聯合新聞網2011/02/01
- ↑ 谷歌推出Anroid Market在線軟件平台新浪科技2008年08月29號 09:31
- ↑ 〈Android 2.3 Gingerbread正式登場、新功能全面睇!〉。
- ↑ "Android Team"Laser Focused"On The User Experience For Next Release".
睇埋
[編輯]- Android裝置一覽:搭載Android系統嘅裝置產品