編輯本段名稱來(lái)源
Android一詞最早出現(xiàn)于法國(guó)作家利爾亞當(dāng)(Auguste Villiers de l'Isle-Adam)在1886年發(fā)表的
科幻小說(shuō)《
未來(lái)夏娃》(
L'ève future)中。他將外表像人的機(jī)器起名為Android。
編輯本段內(nèi)置服務(wù)
谷歌移動(dòng)服務(wù)(英文:Google Mobile Service)是
谷歌的一項(xiàng)服務(wù),該服務(wù)簡(jiǎn)稱“GMS”,指在讓用戶利用
移動(dòng)電話或其他移動(dòng)設(shè)備使用谷歌搜索、
谷歌地圖、
Gmail、
YouTube、
Android Market等谷歌服務(wù)產(chǎn)品。
谷歌將
谷歌移動(dòng)服務(wù)(GMS)內(nèi)嵌到Android手機(jī)系統(tǒng)中,并且對(duì)android手機(jī)生產(chǎn)商給予不同程度的授權(quán)。
GMS是Android操作系統(tǒng)的靈魂,大部分用戶使用Android手機(jī),其實(shí)就是為了使用谷歌服務(wù)。
編輯本段開(kāi)放手持設(shè)備聯(lián)盟
開(kāi)放手持設(shè)備聯(lián)盟(
Open Handset Alliance)是
美國(guó)Google公司于2007年11月5日宣布組建的一個(gè)全球性的聯(lián)盟組織。這一聯(lián)盟將支持
Google發(fā)布的
手機(jī)操作系統(tǒng)或者
應(yīng)用軟件,共同開(kāi)發(fā)Android系統(tǒng)的開(kāi)放源代碼。開(kāi)放手持設(shè)備聯(lián)盟包括手機(jī)制造商、手機(jī)芯片廠商和移動(dòng)運(yùn)營(yíng)商。
命名規(guī)則
Android 用甜點(diǎn)作為它們系統(tǒng)版本的代號(hào)的命名方法開(kāi)始于 Andoird 1.5 發(fā)布的時(shí)候。作為每個(gè)版本代表的甜點(diǎn)的尺寸越變?cè)酱?,然后按?6個(gè)字母數(shù)序:
紙杯蛋糕,
甜甜圈,
松餅,
凍酸奶,
姜餅,
蜂巢,
冰激凌三明治 發(fā)行版本
版本 | 備注 |
---|
Android1.1 | 2008 年9月發(fā)布的Android第一版 |
Android 1.5 Cupcake (紙杯蛋糕) | 2009年4月30日,官方1.5版本(Cupcake 紙杯蛋糕)的Android發(fā)布。主要的更新如下: 1、拍攝/播放影片,并支持上傳到Y(jié)outube 2、支持立體聲藍(lán)牙耳機(jī),同時(shí)改善自動(dòng)配對(duì)性能 3、最新的采用WebKit技術(shù)的瀏覽器,支持復(fù)制/貼上和頁(yè)面中搜索 4、GPS性能大大提高 5、提供屏幕虛擬鍵盤 6、主屏幕增加音樂(lè)播放器和相框widgets 7、應(yīng)用程序自動(dòng)隨著手機(jī)旋轉(zhuǎn) 8、短信、Gmail、日暦,瀏覽器的用戶接口大幅改進(jìn),如Gmail可以批量刪除郵件 9、相機(jī)啟動(dòng)速度加快,拍攝圖片可以直接上傳到Picasa 10、來(lái)電照片顯示 |
Android 1.6 Donut (甜甜圈) | 2009年9月15日,1.6(Donut 甜甜圈)版本軟件開(kāi)發(fā)工具包發(fā)布。主要的更新如下: 1、重新設(shè)計(jì)的Android Market手勢(shì) 2、支持支持CDMA網(wǎng)絡(luò) 3、文字轉(zhuǎn)語(yǔ)音系統(tǒng)(Text-to-Speech) 4、快速搜索框 5、全新的拍照接口 6、查看應(yīng)用程序耗電 7、支持虛擬私人網(wǎng)絡(luò)(VPN) 8、支持更多的屏幕分辨率。 9、支持OpenCore2媒體引擎 10、新增面向視覺(jué)或聽(tīng)覺(jué)困難人群的易用性插件 |
Android2.0/2.0.1/2.1 Eclair (松餅) | 2009年10月26日,2.0(Eclair 松餅)版本軟件開(kāi)發(fā)工具包發(fā)布。主要的更新如下: 1、優(yōu)化硬件速度 2、"Car Home"程序 3、支持更多的屏幕分辨率 4、改良的用戶界面 5、新的瀏覽器的用戶接口和支持HTML5 6、新的聯(lián)系人名單 7、更好的白色/黑色背景比率 8、改進(jìn)Google Maps3.1.2 9、支持Microsoft Exchange 10、支持內(nèi)置相機(jī)閃光燈 11、支持?jǐn)?shù)碼變焦 12、改進(jìn)的虛擬鍵盤 13、支持藍(lán)牙2.1 14、支持動(dòng)態(tài)桌面的設(shè)計(jì) |
Android 2.2/2.2.1 Froyo (凍酸奶) | 2010年5月20日,2.2(Froyo 凍酸奶)版本軟件開(kāi)發(fā)工具包發(fā)布。主要的更新如下: 1、整體性能大幅度的提升 2、3G網(wǎng)絡(luò)共享功能。 3、Flash的支持。 4、App2sd功能。 5、全新的軟件商店。 6、更多的Web應(yīng)用API接口的開(kāi)發(fā)。 |
Android 2.3 Gingerbread (姜餅) | 2010年12月7日,2.3(Gingerbread 姜餅)版本軟件開(kāi)發(fā)工具包發(fā)布。主要的更新如下: 1、增加了新的垃圾回收和優(yōu)化處理事件 2、原生代碼可直接存取輸入和感應(yīng)器事件、EGL/OpenGL ES、OpenSL ES。 3、新的管理窗口和生命周期的框架。 4、支持VP8和WebM視頻格式,提供AAC和AMR寬頻編碼,提供了新的音頻效果器 5、支持前置攝像頭、SIP/VOIP和NFC(近場(chǎng)通訊) 6、簡(jiǎn)化界面、速度提升: 7、更快更直觀的文字輸入: 8、一鍵文字選擇和復(fù)制/粘帖: 9、改進(jìn)的電源管理系統(tǒng): 10、新的應(yīng)用管理方式: |
Android 3.0 Honeycomb (蜂巢) | 2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要更新如下: ·優(yōu)化針對(duì)平板 ·全新設(shè)計(jì)的UI增強(qiáng)網(wǎng)頁(yè)瀏覽功能 ·n-app purchases功能 |
Android 3.1 Honeycomb (蜂巢) | 2011年5月11日在Google I/O開(kāi)發(fā)者大會(huì)宣布發(fā)布,版本主要更新如下: Honeycomb蜂巢(改進(jìn)3.0BUG) 經(jīng)過(guò)優(yōu)化的Gmail電子郵箱; 全面支持GoogleMaps 將Android手機(jī)系統(tǒng)跟平板系統(tǒng)再次合并從而方便開(kāi)發(fā)者。 任務(wù)管理器可滾動(dòng),支持USB 輸入設(shè)備(鍵盤、鼠標(biāo)等)。 支持 Google TV.可以支持XBOX 360無(wú)線手柄 widget支持的變化,能更加容易的定制屏幕widget插件。 |
Android 3.2 Honeycomb (蜂巢) | 2011年7月13日發(fā)布,版本更新如下: 支持7英寸設(shè)備 引入了應(yīng)用顯示縮放功能 |
Android 4.0 Ice Cream Sandwich (冰激凌三明治) | 2011年10月19日 在香港發(fā)布, 4.0(Ice Cream Sandwich 冰激凌三明治)版本主要更新如下: 1、全新的ui 2、全新的Chrome Lite瀏覽器,有離線閱讀,16標(biāo)簽頁(yè),隱身瀏覽模式等。 3、截圖功能 4、更強(qiáng)大的圖片編輯功能 5、自帶照片應(yīng)用堪比Instagram,可以加濾鏡、加相框,進(jìn)行360度全景拍攝,照片還能根據(jù)地點(diǎn)來(lái)排序 6、Gmail加入手勢(shì)、離線搜索功能,UI更強(qiáng)大。 7、新功能People:以聯(lián)系人照片為核心,界面偏重滑動(dòng)而非點(diǎn)擊,集成了Twitter、Linkedin、Google+等通訊工具。有望支持用戶自定義添加第三方服務(wù)。 8、新增流量管理工具,可具體查看每個(gè)應(yīng)用產(chǎn)生的流量。 9、正在運(yùn)行的程序可以像電腦一樣的互相切換 10、人臉識(shí)別功能 11、系統(tǒng)優(yōu)化、速度更快 12、支持虛擬按鍵,手機(jī)可以不再擁有任何按鍵 13、更直觀的程序文件夾: 14、平板電腦和智能手機(jī)通用 15、支持更大的分辨率 16、專為雙核處理器編寫的優(yōu)化驅(qū)動(dòng) 17、全新的18、增強(qiáng)的復(fù)制粘貼功能 19、語(yǔ)音功能 20、全新通知欄: 21、更加豐富的數(shù)據(jù)傳輸功能 22、更多的感應(yīng)器支持 23、語(yǔ)音識(shí)別的鍵盤: 24、全新的3D驅(qū)動(dòng), 游戲支持能力提升 25、全新的谷歌電子市場(chǎng) 26、增強(qiáng)的桌面插件自定義 |
Android N.n Jelly Bean “果凍豆” | 繼“冰激凌三明治”之后的下一版Android系統(tǒng)。 |
2005年事件 Google收購(gòu)了成立僅22個(gè)月的高科技企業(yè)Android。
2007年事件 11月5日,Google公司正式向外界展示Android操作系統(tǒng)。
11月5日,Google與34家手機(jī)制造商、軟件開(kāi)發(fā)商、電信運(yùn)營(yíng)商和芯片制造商共同創(chuàng)建開(kāi)放手持設(shè)備聯(lián)盟。
2008年事件 5月28日,Patrick Brady于Google I/O大會(huì)上提出Android HAL架構(gòu)圖。
8月18日,Android獲得
美國(guó)聯(lián)邦通信委員會(huì)的批準(zhǔn)。
9月22日,谷歌正式對(duì)外發(fā)布第一款A(yù)ndroid手機(jī)——HTC G1。
9月23日,谷歌發(fā)布Android1.0。
9月24日,全球業(yè)界都表示不看好Android操作系統(tǒng),并且聲稱最多1年,Android就會(huì)被Google關(guān)閉。
2009年事件 4月30日,Android1.5正式發(fā)布。
5月10日,HTC G1和HTC G2市場(chǎng)大賣,成為僅次于iPhone的熱門機(jī)型。
9月25日,Android1.6正式發(fā)布。
9月29日,HTC Hero G3廣受歡迎,成為全球最受歡迎的機(jī)型。
10月28日,Android 2.0 智能手機(jī)操作系統(tǒng)正式發(fā)布。
11月10日,由于Android的火熱,Android平臺(tái)出現(xiàn)第一個(gè)惡意間諜軟件:
Mobile Spy,該程序會(huì)自動(dòng)記錄用戶所輸入的任何信息并發(fā)送到黑客的郵箱中,還可以視頻錄下用戶的所有操作過(guò)程。
2010年事件 1月7日,Google發(fā)布了旗下第一款自主品牌手機(jī):Nexus one(HTC G5)。
1月,谷歌與
Linux基金會(huì)就谷歌修改了Linux內(nèi)核而產(chǎn)生了矛盾。
2月3日,
Linux內(nèi)核開(kāi)發(fā)者Greg Kroah-Hartman將Android的驅(qū)動(dòng)程序從Linux內(nèi)核“狀態(tài)樹(shù)”上除去,從此,Android與Linux開(kāi)發(fā)分道揚(yáng)鑣。
5月19日,Google正式對(duì)外發(fā)布Android2.2智能操作系統(tǒng)。
5月20日,Google對(duì)外正式展示了搭載Android系統(tǒng)的
智能電視-Google TV,該電視為全球首臺(tái)智能電視。
7月1日,Google宣布正式與雅虎、亞馬遜合作,并且在Android上推出多項(xiàng)Kindle服務(wù)和雅虎服務(wù)。
7月9日,美國(guó)NDP集團(tuán)調(diào)查顯示,Android系統(tǒng)已占據(jù)了美國(guó)手機(jī)市場(chǎng)28%的份額,全球17%的市場(chǎng)份額。
8月12日,Android平臺(tái)出現(xiàn)第一個(gè)
木馬病毒:Trojan-SMS.AndroidOS.FakePlayer.a,該木馬病毒會(huì)偽裝成應(yīng)用程序,當(dāng)用戶不小心安裝之后,它便會(huì)瘋狂地發(fā)送短信,使用戶的手機(jī)開(kāi)通高額的收費(fèi)服務(wù)。
9月,Android應(yīng)用數(shù)量超過(guò)9萬(wàn)個(gè)。
9月21日,Google對(duì)外公布數(shù)據(jù),每日銷售的Android設(shè)備的新用戶數(shù)達(dá)到20萬(wàn)。
10月26日,Google宣布Android達(dá)到第一個(gè)里程碑:電子市場(chǎng)上的Android應(yīng)用數(shù)量達(dá)到10萬(wàn)個(gè)。
12月7日,Google正式發(fā)布Android2.3操作系統(tǒng)。
2011年事件 1月,Android應(yīng)用數(shù)量超過(guò)20萬(wàn)。
1月,Google對(duì)外公布數(shù)據(jù),每日Android設(shè)備的新用戶數(shù)達(dá)到30萬(wàn)。
2月2日,Android3.0正式發(fā)布。
6月,Android在
日本的智能手機(jī)操作系統(tǒng)市場(chǎng)占有率達(dá)到57%。
7月,Android在
歐洲的智能手機(jī)操作系統(tǒng)市場(chǎng)占有率達(dá)到了22.3%
7月,Google對(duì)外公布數(shù)據(jù),Android每天的新用戶達(dá)到55萬(wàn),Android設(shè)備用戶總數(shù)達(dá)1.35億。
8月,谷歌收購(gòu)
摩托羅拉移動(dòng)。
8月2日,Android手機(jī)已占據(jù)全球智能機(jī)市場(chǎng)48%的份額,并在亞太地區(qū)市場(chǎng)占據(jù)統(tǒng)治地位,終結(jié)了Symbian(
塞班系統(tǒng))的霸主地位,躍居全球第一。
8月,Android在
韓國(guó)的智能手機(jī)操作系統(tǒng)市場(chǎng)占有率達(dá)到了95%。
8月,Android系統(tǒng)在35個(gè)國(guó)家市場(chǎng)占有率第一,平均市場(chǎng)占有率達(dá)到48%。
8月,Android系統(tǒng)成為
亞太地區(qū)第一大系統(tǒng),市場(chǎng)占有率為亞太地區(qū)第一大。
9月,數(shù)據(jù)顯示,Android應(yīng)用數(shù)目已經(jīng)達(dá)到48萬(wàn)。
9月,Android在美國(guó)的智能手機(jī)操作系統(tǒng)市場(chǎng)占有率達(dá)到43%。
10月19日,谷歌正式發(fā)布Android 4.0操作系統(tǒng)。
11月15日,Android在
中國(guó)大陸的智能手機(jī)操作系統(tǒng)市場(chǎng)占有率達(dá)到了58%。
11月18日,美國(guó)NPD數(shù)據(jù)顯示,Android和
iOS平臺(tái)上的游戲占有率都首度超過(guò)
任天堂的
DS掌機(jī)和
索尼的
PSP掌機(jī),手機(jī)游戲玩家也超過(guò)了掌機(jī)玩家,游戲開(kāi)發(fā)商更傾向于向Android和iOS手機(jī)上開(kāi)發(fā)游戲。
11月18日,谷歌報(bào)告顯示,通過(guò)谷歌服務(wù)器激活的Android設(shè)備用戶總數(shù)已經(jīng)超過(guò)2億,每天通過(guò)谷歌服務(wù)器激活的新用戶數(shù)超過(guò)55萬(wàn),而這僅僅是通過(guò)谷歌服務(wù)器激活的用戶設(shè)備數(shù)。
12月9日,Google對(duì)外宣布,Android達(dá)到另一個(gè)里程碑,Android電子市場(chǎng)即Android Market的累計(jì)下載量已經(jīng)突破100億次,平均每月的下載量為10億次。
編輯本段系統(tǒng)架構(gòu)
Android是以Linux為核心的手機(jī)操作平臺(tái),作為一款開(kāi)放式操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開(kāi)發(fā)者使用多種
編程語(yǔ)言來(lái)開(kāi)發(fā)Android
應(yīng)用程序,而不再是以前只能使用Java開(kāi)發(fā)Android應(yīng)用程序的單一局面,因而受到眾多開(kāi)發(fā)者的歡迎,成為真正意義上的開(kāi)發(fā)式操作系統(tǒng)。
在Android中,開(kāi)發(fā)者可以使用
Java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,也可以通過(guò)NDK使用C/
C++作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,也可使用
SL4A來(lái)使用其他各種腳本語(yǔ)言進(jìn)行編程(如:
python、
lua、
tcl、
php等等),還有其他諸如:
Qt(qt for android)、
Mono(mono for android)等一些著名編程框架也開(kāi)始支持Android編程,甚至通過(guò)
MonoDroid,開(kāi)發(fā)者還可以使用
C#作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序。另外,谷歌還在2009年特別發(fā)布了針對(duì)初學(xué)者的Android
Simple語(yǔ)言,該語(yǔ)言類似
Basic語(yǔ)言。而在網(wǎng)頁(yè)編程語(yǔ)言方面,
JavaScript,
ajax,HTML5,
jquery、
sencha、dojo、mobl、PhoneGap等等都已經(jīng)支持Android開(kāi)發(fā)。
而在Android系統(tǒng)底層方面,Android使用C/C++作為開(kāi)發(fā)語(yǔ)言。
應(yīng)用程序(部分)
Java開(kāi)發(fā)方面 Android支持使用Java作為編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,而Android的Java開(kāi)發(fā)方面從接口到功能,都有層出不窮的變化??紤]到Java虛擬機(jī)的效率和資源占用,谷歌重新設(shè)計(jì)了Android的Java,以便能提高效率和減少資源占用,因而與J2ME等不同。
其中Activity等同于J2ME的MIDlet,一個(gè) Activity 類(
Class)負(fù)責(zé)創(chuàng)建視窗(Windows),一個(gè)活動(dòng)中的Activity就是在 foreground(前景)模式,背景運(yùn)行的程序叫做Service。兩者之間通過(guò)由ServiceConnection和AIDL連結(jié),達(dá)到復(fù)數(shù)程序同時(shí)運(yùn)行的效果。如果運(yùn)行中的 Activity 全部畫面被其他 Activity 取代時(shí),該 Activity 便被停止(Stopped),甚至被系統(tǒng)清除(Kill)。
View等同于J2ME的Displayable,程序人員可以通過(guò) View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實(shí)Widget只是View的一種,所以可以使用xml來(lái)設(shè)計(jì)layout,HTC的Android Hero手機(jī)即含有大量的widget。至于ViewGroup 是各種layout 的基礎(chǔ)抽象類(abstract class),ViewGroup之內(nèi)還可以有ViewGroup。View的構(gòu)造函數(shù)不需要再Activity中調(diào)用,但是Displayable的是必須的,在Activity 中,要通過(guò)findViewById()來(lái)從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關(guān),兩者之間通過(guò)Listener 結(jié)合在一起,每一個(gè)View都可以注冊(cè)一個(gè)event listener,例如:當(dāng)View要處理用戶觸碰(touch)的事件時(shí),就要向Android框架注冊(cè)View.OnClickListener。另外還有Image等同于J2ME的BitMap。
C/C++開(kāi)發(fā)方面 早期的Android開(kāi)發(fā)只支持Java作為編程語(yǔ)言開(kāi)發(fā)應(yīng)用程序,因而使得其他語(yǔ)言開(kāi)發(fā)者只能望而卻步。2010年4月,谷歌正式對(duì)開(kāi)發(fā)者發(fā)布了Android NDK,NDK允許開(kāi)發(fā)者使用C/C++作為編程語(yǔ)言來(lái)為Android開(kāi)發(fā)應(yīng)用程序,初版的NDK使得開(kāi)發(fā)者看到了C/C++在Android開(kāi)發(fā)中的希望。
但是,當(dāng)前版本的NDK在功能上還有很多局限性:NDK并沒(méi)有提供對(duì)應(yīng)用程序生命周期的維護(hù);NDK也不提供對(duì)Android系統(tǒng)中大量系統(tǒng)事件的支持;對(duì)于作為應(yīng)用程序交互接口的UI API,當(dāng)前版本的NDK中也沒(méi)有提供。但是相對(duì)于初版的NDK,現(xiàn)在的NDK已經(jīng)進(jìn)行了許多重大的功能改進(jìn)。
由此可見(jiàn),NDK仍然需要完善和發(fā)展,相信未來(lái)隨著NDK的發(fā)展,NDK可以做得更多更好。
中介軟件
操作系統(tǒng)與應(yīng)用程序的溝通橋梁,應(yīng)用分為兩層:函數(shù)層(Library)和虛擬機(jī)(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時(shí)包含了Webkit,所謂的Webkit 就是Apple Safari 瀏覽器背后的引擎。Surface flinger 是就2D或3D的內(nèi)容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自制的Bionic Libc。
Android采用OpenCORE作為基礎(chǔ)多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、
Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 為核心圖形引擎,搭配OpenGL/ES。skia與Linux Cairo功能相當(dāng),但相較于Linux Cairo, skia 功能還只是雛形的。2005年Skia公司被Google收購(gòu),2007年初,Skia GL源碼被公開(kāi),目前Skia 也是Google Chrome 的圖形引擎。
Android的多媒體數(shù)據(jù)庫(kù)采用SQLite數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)又分為共用數(shù)據(jù)庫(kù)及私用數(shù)據(jù)庫(kù)。用戶可通過(guò)ContentResolver類(Column)取得共用數(shù)據(jù)庫(kù)。
Android的中間層多以Java 實(shí)現(xiàn),并且采用特殊的Dalvik 虛擬機(jī)(Dalvik Virtual Machine)。Dalvik虛擬機(jī)是一種“暫存器型態(tài)”(Register Based)的Java虛擬機(jī),變量皆存放于暫存器中,虛擬機(jī)的指令相對(duì)減少。
Dalvik虛擬機(jī)可以有多個(gè)實(shí)例(instance), 每個(gè)Android應(yīng)用程序都用一個(gè)自屬的Dalvik虛擬機(jī)來(lái)運(yùn)行,讓系統(tǒng)在運(yùn)行程序時(shí)可達(dá)到優(yōu)化。Dalvik 虛擬機(jī)并非運(yùn)行Java字節(jié)碼(Bytecode),而是運(yùn)行一種稱為.dex格式的文件。
硬件抽像層
Android 的
HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開(kāi),讓 Android 不至過(guò)度依賴 Linux kernel,以達(dá)成 kernel independent 的概念,也讓 Android framework 的開(kāi)發(fā)能在不考量驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)行發(fā)展。
HAL stub 是一種代理人(proxy)的概念,stub 是以 *.so 檔的形式存在。Stub 向 HAL“提供”操作函數(shù)(operations),并由 Android runtime 向 HAL 取得 stub 的 operations,再 callback 這些操作函數(shù)。HAL 里包含了許多的 stub(代理人)。Runtime 只要說(shuō)明“類型”,即 module ID,就可以取得操作函數(shù)。
內(nèi)核
Android 是運(yùn)行于 Linux kernel之上,但并不是
GNU/Linux。因?yàn)樵谝话鉍NU/Linux 里支持的功能,Android 大都沒(méi)有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 為了達(dá)到商業(yè)應(yīng)用,必須移除被GNU GPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開(kāi)。bionic/libc/kernel/ 并非標(biāo)準(zhǔn)的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。
目前Android 的 Linux kernel控制包括安全(
Security),存儲(chǔ)器管理(Memory Management),程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack),驅(qū)動(dòng)程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構(gòu)建工具 Repo來(lái)初始化源碼。Repo 是 Android 用來(lái)輔助Git工作的一個(gè)工具。
安全權(quán)限機(jī)制
Android本身是一個(gè)權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個(gè)應(yīng)用都以唯一的一個(gè)系統(tǒng)識(shí)別身份運(yùn)行(Linux用戶ID與群組ID)。系統(tǒng)的各部分也分別使用各自獨(dú)立的識(shí)別方式。Linux就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開(kāi)。
系統(tǒng)更多的安全功能通過(guò)權(quán)限機(jī)制提供。權(quán)限可以限制某個(gè)特定進(jìn)程的特定操作,也可以限制每個(gè)URI權(quán)限對(duì)特定數(shù)據(jù)段的訪問(wèn)。
Android安全架構(gòu)的核心設(shè)計(jì)思想是,在默認(rèn)設(shè)置下,所有應(yīng)用都沒(méi)有權(quán)限對(duì)其他應(yīng)用、系統(tǒng)或用戶進(jìn)行較大影響的操作。這其中包括讀寫用戶隱私數(shù)據(jù)(聯(lián)系人或電子郵件),讀寫其他應(yīng)用文件,訪問(wèn)網(wǎng)絡(luò)或阻止設(shè)備待機(jī)等。
安裝應(yīng)用時(shí),在檢查程序簽名提及的權(quán)限,且經(jīng)過(guò)用戶確認(rèn)后,軟件包安裝器會(huì)給予應(yīng)用權(quán)限。從用戶角度看,一款A(yù)ndroid應(yīng)用通常會(huì)要求如下的權(quán)限:
撥打電話、發(fā)送短信或彩信、修改/刪除SD卡上的內(nèi)容、讀取聯(lián)系人信息、讀取日程信息,寫入日程數(shù)據(jù)、讀取電話狀態(tài)或識(shí)別碼、精確的(基于GPS)地理位置、模糊的(基于網(wǎng)絡(luò)獲?。┑乩砦恢?、創(chuàng)建藍(lán)牙連接、對(duì)互聯(lián)網(wǎng)的完全訪問(wèn)、查看網(wǎng)絡(luò)狀態(tài),查看WiFi狀態(tài)、避免手機(jī)待機(jī)、修改系統(tǒng)全局設(shè)置、讀取同步設(shè)定、開(kāi)機(jī)自啟動(dòng)、重啟其他應(yīng)用、終止運(yùn)行中的應(yīng)用、設(shè)定偏好應(yīng)用、震動(dòng)控制、拍攝圖片等。
一款應(yīng)用應(yīng)該根據(jù)自身提供的功能,要求合理的權(quán)限。用戶也可以分析一款應(yīng)用所需權(quán)限,從而簡(jiǎn)單判定這款應(yīng)用是否安全。如一款應(yīng)用是不帶廣告的單機(jī)版,也沒(méi)有任何附加內(nèi)容需要下載,那么它要求訪問(wèn)網(wǎng)絡(luò)的權(quán)限就比較可疑。