Android

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

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

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

二零一零年末,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核心開發分道揚鑣[5]

市場衝擊[編輯]

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

Google Play[編輯]

內文: Google Play

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

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朱古力)
  • 5.0 版叫做 Lollipop (波板糖
  • 5.1 版叫做 Lollipop (波板糖)
  • 6.0 版叫做 Marshmallow (棉花糖
  • 7.0 版叫做 Nougat (鳥結糖
  • 8.0 版叫做 Oreo (奧利奧

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

代號 介紹 圖片
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)版本軟體開發套件發佈[9]。主要更新有:
  • 修補​​UI[10]
  • 支援更大屏幕尺寸同埋解像度(WXGA及更高)
  • 系統級複製黏貼
  • 重新設計嘅多點觸摸屏幕鍵盤
  • 原生支持多個鏡頭(用於視頻通話等)同更多傳感器(陀螺儀、氣壓計等)
  • 電話簿整合Internet Call功能
  • 支援近場通信NFC
  • 強化電源、應用程式管理功能
  • 新增下載管理員
  • 優化遊戲開發支援
  • 多媒體音效強化
  • YAFFS轉換到ext4文件系統
  • 開放咗屏幕截圖功能
  • 對黑色及白色嘅還原更加真實
Android Gingerbread 彩蛋
3.0.1/3.1
(Honeycomb)
* 2011年2月2號,3.0(Honeycomb)版本主要更新如下:
  • 淨係畀平板電腦用
  • Google eBooks上提供數百萬本書
  • 支援平板電腦大螢幕、高解析度
  • 新版Gmail
  • Google Talk視訊功能
  • 3D加速處理
  • 網頁版Market(Web store)詳細分類顯示,依個人Android分別設定安裝應用程式
  • 新嘅短消息通知功能
  • 專為平板電腦設計嘅用戶界面(重新設計嘅通知列同埋系統列)
  • 加強多工處理嘅介面
  • 重新設計適用於大螢幕嘅鍵盤及複製貼上功能
  • 多個標籤嘅瀏覽器以及私密瀏覽模式
  • 快速切換各種功能嘅相機
  • 增強嘅圖庫同埋快速捲動嘅聯絡人介面
  • 更有效率嘅Email介面
  • 支援多核心處理器
Android Gingerbread 彩蛋
4.0
(Ice Cream Sandwich)
Android Ice Cream Sandwich 彩蛋
4.1
(Jelly Bean)
Android Jelly Bean 彩蛋
4.2
(Jelly Bean)
4.3
(Jelly Bean)
4.4
(Kitkat)
Android KitKat 彩蛋
5.0
(Lollipop)
Android Lollipop 彩蛋
5.1
(Lollipop)
6.0
(Marshmallow)
Android Marshmallow 彩蛋
7.0
(Nougat)
Android Nougat 彩蛋
8.0
(Oreo)
Android Oreo 彩蛋

應用[編輯]

目前,中國移動基於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系統架構

應用程式[編輯]

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格式嘅檔案。

硬體抽像層[編輯]

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大都冇,包括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 (2010). "The Programming Languages​​ Beacon, v10.0". 喺5 January 2010搵到.  未知參數|month=已忽略 (詳情); zero width space character in |title= at position 26 (詳情)
  2. "Licenses". Android Open Source Project. Open Handset Alliance. 喺2010-06-10搵到. 
  3. Android之父Andy Rubin:生而Geek,作者:wuzhimin,本文來自《程序員》雜誌2010年9期
  4. Android開發簡介,developerWorks IBM 2009年6月08日
  5. 新浪科技 (2010年2日4). "谷歌Android被Linux內核除名" (用中文寫). 喺2010年4月9日搵到.  檢查日期值喺: |access-date=, |date= (詳情)
  6. Google手機亮相,蘋果日報2008年2月12號
  7. Android稱王扳倒不敗諾基亞,聯合新聞網2011/02/01
  8. 谷歌推出Anroid Market在線軟件平台新浪科技2008年08月29日09:31
  9. "Android 2.3 Gingerbread正式登場、新功能全面睇!". 
  10. "Android Team"Laser Focused"On The User Experience For Next Release". 

睇埋[編輯]