facebook廣告





123

2013年8月2日 星期五

Android系統的基本介紹(二)

硬體支援 

  由於Android作業系統的開放性和可移植性,它可以被用在大部分電子產品上。包括:智慧型手機,上網本,平板電腦,個人電腦,筆記本電腦,電 視,機頂盒,MP3播放器,MP4播放器,掌上遊戲機,家用主機,電子手錶,電子收音機,耳機,汽車設備,導航儀,CD機,VCD機,DVD機,機頂盒以 及其他設備。

Android作業系統大多搭載在使用了ARM架構的硬體設備上。但是同樣也有支援X86架構的Android作業系統,比如Google的Google TV就是使用一個特別定製的X86架構版本的Android操作系統。

同樣,蘋果公司的iOS設備,比如iPhone、iPod Touch以及iPad產品都可以安裝Android作業系統,並且可以通過雙系統啟動工具OpeniBoot或者iDroid來執行Android作業 系統。微軟的Windows Mobile、Windows Phone產品也一樣可以。另外Android亦已成功移植到搭載WebOS系統HP TouchPad以及搭載Meego系統的Nokia N9等裝置。

世界上第一部真正意義上使用Android作業系統的設備是2008年10月22日發布的HTC Dream

Android可以像用電腦上網一樣,使用任何服務。Android對手有蘋果公司iOS作業系統諾基亞SymbianMicrosoftWindows Phone 7RIM使用的BlackBerry OS系統。

 

應用程式

Google Play


Google Play logo

Google play store

Get it on Google play
Google Play,前身為Android Market,目前沒有規範的中文名,中國大陸地區大多使用「電子市場」以及「Google市場」來稱呼,因Android Market的LOGO像菜市場用的袋子,所以部分中國使用者又稱之為「菜市場」。
2009年2月,Google推出Android Market線上應用程式商店,使用者可在該平台網頁尋找、購買、下載及評級使用智慧型手機應用程式及其他內容。 第三方軟體開發商和自由開發者則可以通過Android Market發布其開發的應用程式。截止至2011年10月,Android Market上已有超過30萬個應用程式,並且在2011年12月,Android Market上的應用程式下載量超過100億次。同時,全球已有1億3千萬部Android設備在Android Market即現在的Google Play上下載過軟體。
只有通過Google許可並且認證的廠家才能在其產品設備上安裝Google服務框架和Google Play。同時受到部分地區和國家的政策影響,Google根據部分地區和國家的政策對Google Play上的內容進行了過濾,因此各地區和國家看到的內容不一樣。此外,受到部分地區和國家的電信運營商的影響,Google Play在部分地區和國家可能不可使用。
Google Play內的付費程式在許多國家與地區內提供,如美國英國瑞典德國斯里蘭卡泰國越南香港台灣等。由於受到Google結束中國事件影響,目前Google Play的服務還沒有擴展到中國大陸地區,但大陸用戶仍可通過國際信用卡和相關的免費軟體來完成購買。需要注意的是,通過這種方法購買的軟體可能不會得到當地承認的發票(Invoice)。
除了Google的Google Play之外,還有其他公司的應用程式市場,如亞馬遜公司的Amazon Appstore,它們都提供在線的APK程式的安裝和下載。

程式開發

在早期的Android應用程式開發中,通常通過在Android SDK(Android軟體開發包)中使用Java作為編程語言來開發應用程式。開發者亦可以通過在Android NDK(Android Native開發包)中使用C語言或者C++語言來作為編程語言開發應用程式。同時Google還推出了適合初學者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,Google還推出了Google App Inventor開發工具,該開發工具可以快速地構建應用程式,方便新手開發者。

應用程式安全機制

Android作業系統使用了沙箱(sandbox)機制,所有的應用程式都會先被簡單地解壓縮到沙箱中進行檢查,並且將應用程式所需的權限送出給 系統,並且將其所需權限以列表的形式展現出來,供用戶檢視。例如一個第三方瀏覽器需要「連接網路」的權限,或者一些軟體需要撥打電話,發送簡訊等權限。用 戶可以根據權限來考慮自己是否需要安裝,用戶只有在同意了應用程式權限之後,才能進行安裝。

惡意程式與病毒

由於Android作業系統的開放和自由性,一些惡意程式和病毒也隨之出現。2010年8月,卡巴斯基病毒實驗室報告稱發現了Android作業系統上首個木馬程式,並將其命名為「Trojan-SMS.AndroidOS.FakePlayer.a」,這是一個通過簡訊方式感染智慧型手機的木馬,並且已經感染了一定數量的Android設備。除了簡訊感染方式,這些Android木馬還可以偽裝成一些主流的應用程式,並且還可以隱藏在一些正規的應用程式之中。
儘管Google通過定期的檢查撤除這些存在於 Google Play 上的惡意程式和病毒,但是這並不能完全阻止其他病毒通過第三方網路的方式產生並且傳播。
目前Android作業系統上已經擁有防病毒程式來防止設備中毒,例如 AvastF-SecureKasperskyTrend MicroSymantec金山毒霸等防護軟體也已經發布了Android版本。
某些病毒,目前經過Cross-Compile的測試,證實在Linux上他們無法正常運作。

盜版問題

由於第三方市場流行,Android用戶大多不願意付費購買應用,轉而直接下載已被駭客破解的軟體檔,對應用開發者造成嚴重損失。有遊戲開發者針對其作品的調查指出,97%亞洲玩家、70%歐洲玩家及47%北美玩家都下載盜版。

SEAndroid

美國國家安全域在2012年1月發布SEAndroid開源項目和程式碼,使Android系統支援強制存取控制(Mandatory Access Control)以增加系統安全性。

 

市場佔有率

2009年第二季度,根據市場研究公司Canalys的數據顯示,Android佔據全球智慧型手機作業系統市場2.8%的份額,這個數字在2010年第四季度的全球份額中增長到了33%,Android作業系統也因此擊敗了諾基亞的Symbian系統成為了全球第一大智慧型手機作業系統。2012年5月,根據市場調查公司的數據顯示,Android作業系統在全球智慧型手機作業系統中的份額已經過半,達到了60%,全球有一半的智慧型手機使用Android作業系統。
2010年5月的數據顯示,Android作業系統在2010年第一季度的銷量超過了對手iOS平台,成為美國最大的智慧型手機作業系統。
根據本土市場研究公司ComScore的數據顯示,2009年11月時,Android在美國的智慧型手機作業系統市場的佔有率為5.2%,在2010年2月時,這個數字變成了9.0%,而在2010年第三季度末時,Android已經佔據了美國市場的21.4%的份額。截止至2011年6月,Google表示,每日通過Google服務器啟用的Android設備達到了55萬部,並且以每週4.4%的速度增長。2011年8月1日,Canalys的數據顯示,Android已佔據美國48%的智慧型手機市場佔有率。2011年10月13日,Google表示,全球市場上有1.9億部Android設備通過Google認證,而在2011年11月16日,全球市場上已有2億部Android設備通過Google認證。但是,搭載Android作業系統的平板電腦卻只有1.9%的份額,只有380萬Android蜂巢平板被賣出,遠遠低於蘋果公司的iPad的銷量。2012年6月,Google在2012 Google I/O大會上表示全球市場上有4億部Android設備被啟動,每天啟動一百萬台
2013年5月,Android在中國的佔有率有71.5%,超過其主要競爭對手蘋果公司約50%。世界佔有率亦有近70%。

使用者使用系統版本比例


Android作業系統版本的用戶比例(2013年6月3日)
截止至2013年6月3日,不同的Android作業系統版本的用戶比例。
版本名稱 API level 用戶分佈
4.2.x Jelly Bean 果凍豆 17 4.0%
4.1.x Jelly Bean 果凍豆 16 29.0%
4.0.x Ice Cream Sandwich 冰淇淋三明治 14-15 25.6%
3.x.x Honey Comb 蜂巢 11-13 0.1%
2.3.x Ginger Bread 薑餅 9-10 36.5%
2.2 Froyo 霜凍優格 8 3.2%
2.1 Eclair 閃電泡芙 7 1.5%
1.6 Donut 甜甜圈 4 0.1%

版本

Android作業系統曾有兩個內部版本,分別是阿童木Astro)和發條機器人Bender),在這兩個版本之後,Google為了避免商標問題,將Android作業系統的代號由機器人系列轉變為了現在的甜點系列。[69]而現時Android系統以差不多每半年一次的步伐進行升級,比如1.5版叫做Cupcake紙杯蛋糕)、1.6版為Donut甜甜圈)、2.0/2.1版為Éclair閃電泡芙,一種法式奶油夾心甜點)、2.2版為Froyo霜凍優格)、2.3版為Gingerbread薑餅)、3.0版為Honeycomb蜂窩)、4.0版為Ice Cream Sandwich冰淇淋三明治)、4.1/4.2/4.3版稱為Jelly Bean雷根糖)及5.0版稱為Key Lime Pie墨西哥萊姆派)。這些是以A、B、C、D、E、F、G、H、I、J、K字頭順序來排列的。
由於Android平台的高度開放和對軟體升級架構尚欠規範,導致Android產品往往因新版軟體的硬體要求過高,或致設備廠商無法保證對其產品提供最新版軟體更新,或致廠商拒絕支援而無法更新,令產品壽命週期大幅縮短及衍生俗稱「孤兒機」問題。

發佈


Android 1.1介面

Android 2.0介面

Android 2.3介面

供平板電腦使用的Android 3.0介面

Android 4.0介面

Android 4.3介面

Key Lime Pie food
1.5
(Cupcake)
基於Linux Kernel 2.6.27
2009年4月30日,官方1.5版本(Cupcake 紙杯蛋糕)的Android發行。 主要的更新如下:
  • 拍攝/播放視訊,並支援上傳到Youtube
  • 支援立體聲藍芽耳機,同時改善自動配對效能
  • 最新的採用WebKit技術的瀏覽器,支援複製/貼上和頁面中搜尋
  • GPS效能大大提高
  • 提供螢幕虛擬鍵盤
  • 主螢幕增加音樂播放器和相框widgets
  • 應用程式自動隨著智慧型手機旋轉
  • 簡訊Gmail、日曆,瀏覽器的使用者介面大幅改進,如Gmail可以批次刪除郵件
  • 相機啟動速度加快,拍攝圖片可以直接上傳到Picasa
  • 來電照片顯示
1.6
(Donut)
基於Linux Kernel 2.6.29
2009年9月15日,1.6(Donut 甜甜圈)版本軟體開發套件發佈。主要的更新如下:
  • 重新設計的Android Market
  • 手勢支援
  • 支援CDMA網路
  • 文字轉語音系統(Text-to-Speech)
  • 快速搜尋框
  • 全新的拍照介面
  • 檢視應用程式耗電
  • 支援虛擬私人網路(VPN)
  • 支援更多的螢幕解析度。
  • 支援OpenCore2媒體引擎
  • 新增面向視覺或聽覺困難人群的易用性外掛模組[77]
2.0/2.0.1/2.1
(Eclair)
基於Linux Kernel 2.6.29
2009年10月26日,2.0(Eclair 鬆餅)版本軟體開發套件發佈。主要的更新如下:
  • 最佳化硬體速度
  • "Car Home"程式
  • 支援更多的螢幕解析度
  • 改良的使用者介面
  • 新的瀏覽器的使用者介面和支援HTML5
  • 新的聯繫人名單
  • 更好的白色/黑色背景比率
  • 改進Google Maps 3.1.2
  • 支援Microsoft Exchange
  • 支援內建相機閃光燈
  • 支援數碼變焦
  • 改進的虛擬鍵盤
  • 支援藍芽2.1
  • 支援動態桌面的設計
2.2/2.2.1
(Froyo)
基於Linux Kernel 2.6.32
2010年5月20日,2.2(Froyo 冷凍優格)版本軟體開發套件發佈。主要的更新如下:
  • 支援將軟體安裝至擴充功能內存[81]
  • 整合Adobe Flash 10.1支援[82]
  • 加強軟體即時編譯的速度[83]
  • 新增軟體啟動"快速"至電話瀏覽器[84]
  • USB分享器和WiFi熱點功能[85]
  • 支援在瀏覽器上傳檔案[86]
  • 更新Market中的批次和自動更新[87]
  • 增加對Microsoft Exchange的支援(安全政策, auto-discovery, GAL look-up)
  • 整合ChromeV8 JavaScript引擎到瀏覽器
  • 加強快速搜尋小工具
  • 更多軟體能透過Market更新,類似2.0/2.1中的Map更新
  • 速度和效能最佳化
註:部分標稱為2.2的韌體仍然在使用2.6.29的核心。這種韌體可以實作大部分2.2的功能(比如flash),但效能上與2.6.32有一定差距。
2.3
(Gingerbread)
基於Linux Kernel 2.6.35
2010年12月7日,2.3(Gingerbread 薑餅)版本軟體開發套件發佈。主要的更新如下:
  • 修補UI
  • 支援更大的螢幕尺寸和解像度(WXGA及更高)
  • 系統級複製貼上
  • 重新設計的多點觸控式螢幕幕鍵盤
  • 原生支援多個鏡頭(用於視訊通話等)和更多感測器(陀螺儀、氣壓計等)
  • 電話簿整合Internet Call功能
  • 支援近場通訊NFC
  • 強化電源、應用程式管理功能
  • 新增下載管理員
  • 最佳化遊戲開發支援
  • 多媒體音效強化
  • YAFFS轉換到ext4檔案系統
  • 開放了螢幕截圖功能
  • 對黑色及白色的還原更加真實
  • Google Talk視訊功能
3.0.1/3.1/3.2
(Honeycomb)
基於Linux Kernel 2.6.36
2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要更新如下:
  • 僅供平板電腦使用
  • Google eBooks上提供數百萬本書
  • 支援平板電腦大螢幕、高解析度
  • 新版Gmail
  • 3D加速處理
  • 網頁版Market(Web store)詳細分類顯示,依個人Android分別設定安裝應用程式
  • 新的快訊通知功能
  • 專為平板電腦設計的使用者介面(重新設計的通知列與系統列)
  • 加強多工處理的介面
  • 重新設計適用大螢幕的鍵盤及複製貼上功能
  • 多個標籤的瀏覽器以及私密瀏覽模式
  • 快速切換各種功能的相機
  • 增強的圖庫與快速捲動的聯絡人介面
  • 更有效率的Email介面
  • 支援多核心處理器
  • 3.2最佳化7吋平板顯示
  • 部分3.0執行的應用程式以2.3版本的顯示方式呈現(如Play 商店),為一個缺點
4.0
(Ice Cream Sandwich)
基於Linux Kernel 3.0.1
2011年10月19日,4.0(Ice Cream Sandwich 冰淇淋三明治)版本主要更新如下:
  • HOLO主題(Google力薦第三方應用使用HOLO主題並將官方應用全部覆寫為HOLO風格,但仍向下相容原來的android應用視覺樣式)
  • 相機內建全景(Panorama)模式
  • Gmail 外觀有所改動
  • 改動用戶介面,新的啟動畫面,Home 畫面右下角類似 Tray 的圖示,內有多個程式可執行
  • Google Search Bar 會設置在最上方
  • Apps/Widgets 會類似 Honeycomb 模樣
  • 系統字型由原先的Droid Sans變更為Roboto
4.1/4.2/4.3
(Jelly Bean)
基於Linux Kernel 3.4.0
2012年6月28日,Android 4.1(Jelly Bean 果凍豆)版本主要更新如下:
  • 基於Android 4.0改善
  • 「牛油」效能(Project Butter),意思是可以讓 Jelly Bean 的體驗像「牛油般順滑」(鎖定並提昇使用者頁面的速度與流暢性,對低配置的裝置效果不大)
  • 「Google Now」可在 Google 日曆內加入活動舉辦時間、地點,系統就會在判斷當地路況後,提前在「適當的出門時間給予通知」
  • 新增離線語音輸入
  • 通知中心顯示更多訊息,如支援拉開欄項以檢視詳細圖片(如截屏)
  • 更多的平板最佳化
  • 語音助理:與 S Voice 類近,相抗於 Apple Siri
  • Google Play 增加電視視訊與電影的購買
  • 提昇反應速度
  • 強化預設鍵盤
  • 大幅改變使用者介面設計
  • 更多的Google 雲端整合
  • 不會內建Flash Player,並且adobe聲明停止開發
2012年10月30日,Android 4.2(Jelly Bean 果凍豆)版本主要更新如下:
  • 多重使用者帳戶
  • 通知中心裡的設定鍵
  • 照片球(球形全景拍攝)
  • Google Now 更新,除了搜尋外,現在可檢視 Gmail 與飛機航班等資料;更提供使用者購買票卷、音樂會、股票、突發新聞等
  • 手勢輸入
  • 多媒體無線傳輸 Miracast
  • 螢幕鎖定時的小工具,唯目前支援的小工具十分有限(基於開發者有無加入此功能)
  • 白日夢,類似於螢幕保護
2013年7月25日,Android 4.3(Jelly Bean 果凍豆)版本主要更新如下:
  • 支援多使用者登入,支援一台終端裝置上有多個登入帳號
  • 「藍芽低功耗」功能,開啟藍芽後,耗電量相比之前大幅降低
  • 支援OpenGL ES 3.0,將為Android遊戲帶來更出色的視覺體驗
  • DRM APIs,提供全新數位版權加密技術支援
  • 支援4K解析度,加入對640PPI(XXXHDPI)的支援
  • 提高了全景相機的校準和縫合,最佳化曝光修正
5.0
(Key Lime Pie)
2012年12月3日有報導指谷歌正在開發Android 5.0。有Google員工證實作業系統將命名為Key Lime Pie。

系統架構

應用程式

Android以Linux為核心的Android行動平台,使用Java作為程式語言,使介面到 功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個Activity類別負責建立視窗,一個活動中的Activity就 是在foreground(前景)模式,背景執行的程式叫做Service。兩者之間透過由ServiceConnection和AIDL連結,達到複數 程式同時執行的效果。如果執行中的Activity全部畫面被其他Activity取代時,該Activity便被停止,甚至被系統清除。
View等同於J2ME的Displayable,程式人員可以透過View類別與「XML layout」檔將UI放置在視窗上,並可以利用View打造出所謂的Widgets,其實Widget只是View的一種,所以可以使用xml來設計 layout。至於ViewGroup是各種layout的基礎抽象類別,ViewGroup之內還可以有ViewGroup。View的建構函式不需要 在Activity中呼叫,但是Displayable的是必須的,在Activity中,要透過findViewById()來從XML中取得 View,Android的View類的顯示很大程度上是從XML中讀取的。View與事件息息相關,兩者之間透過Listener結合在一起,每一個 View都可以註冊event listener,例如:當View要處理使用者觸碰的事件時,就要向Android框架註冊View.OnClickListener。另外還有 Image等同於J2ME的BitMap。

中介軟體

作業系統與應用程式的溝通橋樑,並用分為兩層:函式層和虛擬機器器Bionic是Android改良libc的版本。Android同時包含了Webkit,所謂的Webkit就是Google Chrome瀏覽器背後的引擎。Surface flinger是就2D或3D的內容顯示到螢幕上。Android使用工具鏈為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類別取得共用資料庫。
Android的中間層多以Java實作,並且採用特殊的Dalvik虛擬機器器。Dalvik虛擬機器器是一種「暫存器型態」的Java虛擬機器器,變數皆存放於暫存器中,虛擬機器器的指令相對減少。
Dalvik虛擬機器器可以有多個例項,每個Android應用程式都用一個自屬的Dalvik虛擬機器器來執行,讓系統在執行程式時可達到最佳化。Dalvik虛擬機器器並非執行Java位元組碼,而是執行一種稱為.dex格式的檔案。

硬體抽像層(HAL)

Android的硬體抽像層是能以封閉源碼形式提供硬體驅動模組。HAL的目的是為了把Android framework與Linux kernel隔開,讓Android不至過度依賴Linux kernel,以達成「核心獨立」(kernel independent)的概念,也讓Android framework的開發能在不考量驅動程式實作的前提下進行發展。
HAL stub是一種代理人的概念,stub是以*.so檔的形式存在。Stub向HAL「提供」操作函式,並由Android runtime向HAL取得stub的操作,再回撥這些操作函式。HAL里包含了許多的stub(代理人)。Runtime只要說明「型別」,即module ID,就可以取得操作函式。

程式語言

Android是執行於Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux裏支援的功能,Android大都沒有支援,包括CairoX11AlsaFFmpegGTKPangoGlibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,Android 並沒有使用者層驅動(user space driver)這種東西。所有的驅動還是在核心空間中,並以 HAL 隔開版權問題。bionic/libc/kernel/ 並非標準的核心表頭檔(kernel header files)。Android的核心表頭檔是利用工具由Linux核心的表頭檔所產生的,這樣做是為了保留常數、資料結構與巨集。
Android的內核基於Linux,除了內核之外,則是中介層、資料庫元和用C/C++編寫的API以及應用程式框架。Android的應用程式通常以Java資料庫元為基礎編寫,執行程式時,應用程式的代碼會被即時轉變為Dalvik dex-code (Dalvik Executable),然後Android作業系統通過使用即時編譯的Dalvik虛擬機來將其執行。
目前Android的Linux kernel控制包括安全、記憶體管理行程管理網路堆疊驅動程式模型等。下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個工具。

專利糾紛

《PC世界》雜誌網站2011年9月22日報導,Android已捲入1000多件專利訴訟。2011年8月,Google斥資125億美元收購摩托羅拉行動(Motorola Mobility)及其擁有的約2.45萬份專利組合。

命名由來

Android一詞最早出現於法國作家利爾亞當Auguste Villiers de l'Isle-Adam)在 1886 年發表的科幻小說《未來夏娃》(L'Ève future)中。他將外表像人的機器人取作 Android。

Android標誌

Android是一個全身綠色的機器人,顏色採用了PMS 376C和RGB中十六進制的#A4C639來繪製,這是Android作業系統的品牌象徵。有時候,它會以純文字的標誌展示。
Android的標誌是由Ascender 公司設計的,其中的文字使用了Ascender公司專門製作的稱之為「Google Droid字型」的字型

 

文章出處:https://zh.wikipedia.org/wiki/Android


 

沒有留言:

張貼留言