Android(讀音:)係一個公開源碼嘅Linux作業系統,主要用喺手提電子產品,好似有電腦功能嘅智能電話或平板電腦。家陣未有劃一唐名,粵語用者,多數用番英文名Android叫佢,少數人亦會叫佢做安撞,其它華語地區(大陸同臺灣)一般叫安卓。
開發者 | Google/開放手持設備聯盟 |
---|---|
程式語言 | C(核心)、C++(有啲第三方庫)、Java(用戶界面) |
運作狀態 | 營運緊 |
原始碼模式 | 自由同埋開放源代碼軟件 |
初始版本 | 2008年10月21號 |
穩定版本 | 8.0 / 2017年8月21號 |
支援平台 | ARM、MIPS、Power Architecture、x86 |
核心類別 | 整塊性核心(Linux) |
預設UI | 圖形 |
授權條款 | Apache 2.0同埋GPLv2 |
官方網站 | android.com |
Android呢個名,最早見於科幻小說《未來夏娃》,係法國作家利爾亞當寫嘅,一八八六年發表。佢將外表似人咁樣,就叫Android。Android操作系統,最初由Andy Rubin創辦,最初只係支援手機。二零零五年,由Google收購注資,並同啲手機大廠,一齊搞開放手機聯盟(Open Handset Alliance),開發改良,逐漸擴展到平板電腦同埋其他用途上面。
二零一零年末,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核心開發分道揚鑣。
其他作業系統好似微軟嘅Windows Mobile,手機商要同微軟畀相當於手機成本10%嘅牌照費,Android就免費開源打,此外,手機製造商同網絡商為咗要保障收入,通常會限制用戶可以用啲咩功能同服務。Android就唔設限制,可以好似用電腦上網咁,用到好多服務。Android對手有蘋果電腦嘅iOS、微軟嘅Windows Phone同RIM用嘅BlackBerry OS系統等。
2009年2月,Google推出Android Market,用戶可以喺嗰度下載手機應用程式(apps)同幫apps評分。
2012年3月,Android Market改名做Google Play。
Android系統差唔多每半年升級一次,喺版本10之前每代Android系統都用甜品命名:
以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)版本軟體開發套件發佈。主要更新有:
| |
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工作嘅一個工具。
This article uses material from the Wikipedia 粵語 article Android, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). 呢度嘅所有文字係根據 CC BY-SA 4.0 牌照嘅條款發佈;可能會有附加嘅條款。 Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki 粵語 (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.