【Xamarin开发 Android 系列 4】 Android 基础知识
什么是Android?
?
Android一詞的本義指“機(jī)器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙,號稱是首個為移動終端打造的真正開放和完整的移動軟件。
Android是一種以Linux為基礎(chǔ)的開放源代碼操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機(jī)。2005年由Google收購注資,并組建開放手機(jī)聯(lián)盟開發(fā)改良,逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上。Android的主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場52.5%的份額,中國市場占有率為68.4%。
什么是Android手機(jī)?
Android手機(jī)就是運行在谷歌Android手機(jī)操作系統(tǒng)上的手機(jī),統(tǒng)稱為Android手機(jī),也可稱為gphone手機(jī)。
名稱來源
Android一詞最早出現(xiàn)于法國作家利爾亞當(dāng)(Auguste Villiers de l'Isle-Adam)在1886年發(fā)表的科幻小說《未來夏娃》(L'ève future)中。他將外表像人的機(jī)器起名為Android。Android的Logo是由Ascender公司設(shè)計的。其中的文字使用了Ascender公司專門制作的稱之為“Droid ” 的字體。Android是一個全身綠色的機(jī)器人,綠色也是Android的標(biāo)志。顏色采用了PMS 376C和RGB中十六進(jìn)制的#A4C639來繪制,這是Android操作系統(tǒng)的品牌象徵。有時候,它們還會使用純文字的Logo。
版本類型
Android在正式發(fā)行之前,最開始擁有兩個內(nèi)部測試版本,并且以著名的機(jī)器人名稱來對其進(jìn)行命名,它們分別是:阿童木(Android Beta),發(fā)條機(jī)器人(Android 1.0)。后來由于涉及到版權(quán)問題,谷歌將其命名規(guī)則變更為用甜點作為它們系統(tǒng)版本的代號的命名方法。甜點命名法開始于 Android 1.5 發(fā)布的時候。作為每個版本代表的甜點的尺寸越變越大,然后按照26個字母數(shù)序:紙杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松餅(Android 2.0/2.1),凍酸奶(Android 2.2),姜餅(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),根據(jù)最新消息新一代Android版本將命名為果凍豆(Jelly Bean)。
各版本發(fā)布時間
| Android版本 | 發(fā)布日期 |
| Android 1.0 | 2008年9月 |
| Android 1.5 Cupcake(紙杯蛋糕) | 2009年4月30日 |
| Android 1.6 Donut(甜甜圈) | 2009年9月15日 |
| Android 2.0/2.0.1/2.1 Eclair(松餅) | 2009年10月26日 |
| Android 2.2/2.2.1 Froyo(凍酸奶) | 2010年5月20日 |
| Android 2.3 Gingerbread(姜餅) | 2010年12月7日 |
| Android 3.0 Honeycomb(蜂巢) | 2011年2月2日 |
| Android 3.1?Honeycomb(蜂巢) | 2011年5月11日 |
| Android 3.2?Honeycomb(蜂巢) | 2011年7月13日 |
| Android 4.0?Ice Cream Sandwich(冰激凌三明治) | 2011年10月19日 |
| Android 4.1?Jelly Bean(果凍豆) | 2012年6月28日 |
| Android 4.2?Jelly Bean(果凍豆) | 2012年10月30日 |
| Android 4.3 Jelly Bean(果凍豆) | 2013年7月24日 |
| Android 4.4 KitCat(巧克力) | 2013年10月31日 |
| Android 5.0 Lolipop(棒棒糖) | 2014年10月15日 |
| Android 5.1 Lolipop(棒棒糖) | 2015年3月10日 |
?
Android平臺優(yōu)勢
1)、開放性
在優(yōu)勢方面,Android平臺首先就是其開放性,開發(fā)的平臺允許任何移動終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個嶄新的平臺也將很快走向成熟。
開放性對于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費者和廠商,而對于消費者來講,最大的受益正是豐富的軟件資源。開放的平臺也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機(jī)。
2)、掙脫運營商的束縛
在過去很長的一段時間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運營商的控制。自從 iPhone上市,用戶可以更加方便地連接網(wǎng)絡(luò),運營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運營商口中的笑談。
3)、豐富的硬件選擇
這一點還是與Android平臺的開放性相關(guān),由于Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會影響到數(shù)據(jù)同步、甚至軟件的兼容。好比你從諾基亞Symbian風(fēng)格手機(jī)一下改用蘋果iPhone,同時還可將Symbian 中優(yōu)秀的軟件帶到iPhone上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移。
4)、不受任何限制的開發(fā)商
Android平臺提供給第三方開發(fā)商一個十分寬泛、自由的環(huán)境。因此不會受到各種條條框框的阻撓,可想而知,會有多少新穎別致的軟件會誕生。但也有其兩面性,血腥、暴力、**方面的程序和游戲如何控制正是留給Android難題之一。
5)、無縫結(jié)合的Google應(yīng)用
如今叱咤互聯(lián)網(wǎng)的Google已經(jīng)走過10年度歷史。從搜索巨人到全面的互聯(lián)網(wǎng)滲透,Google服務(wù)如地圖、郵件、搜索等已經(jīng)成為連接用戶和互聯(lián)網(wǎng)的重要紐帶,而Android平臺手機(jī)將無縫結(jié)合這些優(yōu)秀的Google服務(wù)。
?
Android研發(fā)歷史
2005年
Google收購了成立僅22個月的高科技企業(yè)Android公司。
2007年
11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且在這天谷歌宣布建立一個全球性的聯(lián)盟組織,該組織由34家手機(jī)制造商、軟件開發(fā)商、電信運營商以及芯片制造商共同組成。這一聯(lián)盟將支持谷歌發(fā)布的手機(jī)操作系統(tǒng)以及應(yīng)用軟件,將共同開發(fā)Android系統(tǒng)的開放源代碼。
2008年
5月28日,Patrick Brady于Google I/O大會上提出Android HAL架構(gòu)圖。
8月18日,Android獲得美國聯(lián)邦通信委員會的批準(zhǔn)。
9月22日,谷歌正式對外發(fā)布第一款A(yù)ndroid手機(jī)——HTC G1。
9月23日,谷歌發(fā)布Android1.0。
9月24日,全球業(yè)界都表示不看好Android操作系統(tǒng),并且聲稱最多1年,Android就會被Google關(guān)閉。
2009年
4月30日,Android1.5正式發(fā)布。
5月10日,HTC G1和HTC G2市場大賣,成為僅次于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平臺出現(xiàn)第一個惡意間諜軟件:Mobile Spy。
2010年
1月7日,Google發(fā)布了旗下第一款自主品牌手機(jī):Nexus one(HTC G5)。
1月,谷歌與Linux基金會就Linux內(nèi)核的同步和維護(hù)意見不一致而產(chǎn)生了矛盾。
2月3日,Linux內(nèi)核開發(fā)者Greg Kroah-Hartman將Android的驅(qū)動程序從Linux內(nèi)核“狀態(tài)樹”上除去。
5月19日,Google正式對外發(fā)布Android2.2智能操作系統(tǒng)。
5月20日,Google對外正式展示了搭載Android系統(tǒng)的智能電視-Google TV,該電視為全球首臺智能電視。
7月1日,Google宣布正式與雅虎、亞馬遜合作,并且在Android上推出多項Kindle服務(wù)和雅虎服務(wù)。
7月9日,美國NDP集團(tuán)調(diào)查顯示,Android系統(tǒng)已占據(jù)了美國手機(jī)市場28%的份額,全球17%的市場份額。
8月12日,Android平臺出現(xiàn)第一個木馬病毒:Trojan-SMS.AndroidOS.FakePlayer.a。
9月,Android應(yīng)用數(shù)量超過9萬個。
9月21日,Google對外公布數(shù)據(jù),每日銷售的Android設(shè)備的新用戶數(shù)達(dá)到20萬。
10月26日,Google宣布Android達(dá)到第一個里程碑:電子市場上Android應(yīng)用數(shù)量達(dá)到10萬個。
12月7日,Google正式發(fā)布Android2.3操作系統(tǒng)。
2011年
1月,Google對外宣布Android Market上的應(yīng)用數(shù)量超過20萬。
1月,Google對外公布數(shù)據(jù),每日Android設(shè)備的新用戶數(shù)達(dá)到了30萬。
2月,美國移動用戶36%擁有智能手機(jī)。當(dāng)中,48%的智能手機(jī)用戶選擇Android智能手機(jī)。約32.1%的智能手機(jī)用戶選擇了蘋果iPhone。黑莓及其它智能手機(jī)占有11.6%的份額。
2月2日,Android3.0正式發(fā)布。
2月3日,谷歌發(fā)布了專用于平板電腦的Android 3.0蜂巢系統(tǒng)。
6月,Android在日本的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到57%。
7月,Android在歐洲的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到了22.3%
7月,Google對外公布數(shù)據(jù),Android每天的新用戶達(dá)到55萬,Android設(shè)備用戶總數(shù)達(dá)1.35億。
8月,谷歌收購摩托羅拉移動。
8月,Google對外宣布Android Market上的應(yīng)用數(shù)量超過30萬。
8月2日,Android手機(jī)已占據(jù)全球智能機(jī)市場48%的份額,并在亞太地區(qū)市場占據(jù)統(tǒng)治地位,終結(jié)了Symbian(塞班系統(tǒng))的霸主地位,躍居全球第一。
8月,Android在韓國的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到了95%。
8月,Android系統(tǒng)在35個國家市場占有率第一,平均市場占有率達(dá)到48%。
8月,Android系統(tǒng)成為亞太地區(qū)第一大系統(tǒng),市場占有率為亞太地區(qū)第一大。
9月,Android在美國的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到43%。
10月19日,谷歌正式發(fā)布Android 4.0操作系統(tǒng)。
11月,Android Market上提交審核的應(yīng)用程序數(shù)量達(dá)到50萬。
11月初,谷歌對Android Market上的應(yīng)用程序進(jìn)行了大清理,據(jù)統(tǒng)計,此次共清理了約18萬個應(yīng)用程序,包括流氓應(yīng)用、病毒軟件、侵犯版權(quán)、低質(zhì)量和濫竽充數(shù)的各種程序,谷歌將這一系列應(yīng)用刪除后,使得Android市場中的優(yōu)質(zhì)應(yīng)用程序總數(shù)到31.5萬。
11月15日,Android在中國大陸的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到了58%。
11月20日,谷歌宣布啟動了Android Market應(yīng)用審核、取締、清掃行為,定期對電子市場上存在的不合格、低質(zhì)量、違法惡意的應(yīng)用程序進(jìn)行清理。
11月18日,美國NPD數(shù)據(jù)顯示,Android和iOS平臺上的游戲占有率都首度超過任天堂的DS掌機(jī)和索尼的PSP掌機(jī),手機(jī)游戲玩家也超過了掌機(jī)玩家,游戲開發(fā)商更傾向于向Android和iOS手機(jī)上開發(fā)游戲。
11月18日,谷歌報告顯示,通過谷歌服務(wù)器激活的Android設(shè)備用戶總數(shù)已經(jīng)超過2億,每天激活的新用戶數(shù)超過55萬,而這僅僅是通過谷歌服務(wù)器激活的用戶設(shè)備數(shù)。
12月9日,Google對外宣布,Android Market的累計下載量已經(jīng)突破100億次,平均每月的下載量為10億次。
12月18日,Google移動事業(yè)部副總裁Andy Rubin表示,每天激活的Android設(shè)備已達(dá)到70萬部。
12月26日,Andy Rubin通過Twitter宣布,圣誕節(jié)的前兩天24日和25日,共有370萬部Android設(shè)備被激活。
2012年
1月4日,數(shù)據(jù)顯示,Android Market上的應(yīng)用程序數(shù)量突破40萬個,每4個月增加10萬個應(yīng)用程序
1月5,數(shù)據(jù)顯示,在谷歌電子市場上登記的Android開發(fā)者已經(jīng)達(dá)到了10萬名。
1月20日,谷歌報告顯示,通過谷歌服務(wù)器激活的Android設(shè)備用戶總數(shù)已經(jīng)超過2.5億,距離去年11月的數(shù)量,在短短2個月時間內(nèi)全球共賣出5000萬臺安卓設(shè)備,平均每秒鐘就賣出10臺安卓設(shè)備。
2月4日,comScore等數(shù)據(jù)市場研究機(jī)構(gòu)的數(shù)據(jù)顯示,安卓在美國手機(jī)市場的占有率達(dá)到了47.3%。
2月5日,美國聯(lián)邦政府宣布成立專門的Android實驗室進(jìn)行適用于軍方的Android第三方ROM的定制工作。
2月15日,美國聯(lián)邦政府總務(wù)署宣布已經(jīng)采購了2萬臺Android手機(jī)供政府人員使用。
2月22日,Android在中國大陸的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到了68.4%。
2月28日,谷歌正式宣布,Android設(shè)備每天激活量達(dá)到85萬臺,通過谷歌服務(wù)器激活的Android設(shè)備用戶總數(shù)突破3億臺,距離2012年1月的數(shù)量,在短短1個月時間內(nèi)全球共賣出5000萬臺安卓設(shè)備,平均每秒鐘就賣出15臺安卓設(shè)備。
2月28日,谷歌官方數(shù)據(jù)顯示,Android電子市場(Android Market)上的應(yīng)用程序數(shù)量已經(jīng)突破45萬個,一年內(nèi)增加30萬個。
3月1日,Google對外宣布,Android Market的累計下載量已經(jīng)突破130億次。
3月4日,Android在印度的智能手機(jī)操作系統(tǒng)市場占有率達(dá)到了34%。
4月4日,Android在美國市場的占有率增長到了50.1%。
5月1日,Android在東南亞各國的平均份額達(dá)到了49%。
.................
?
Android系統(tǒng)架構(gòu)
Android的系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。android分為四個層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運行庫層和linux核心層。
Android是以Linux為核心的手機(jī)操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。
在Android中,開發(fā)者可以使用Java作為編程語言來開發(fā)應(yīng)用程序,也可以通過NDK使用C/C++作為編程語言來開發(fā)應(yīng)用程序,也可使用SL4A來使用其他各種腳本語言進(jìn)行編程(如:python、lua、tcl、php等等),還有其他諸如:Qt(qt for android)、Mono(mono for android)等一些著名編程框架也開始支持Android編程,甚至通過MonoDroid,開發(fā)者還可以使用C#作為編程語言來開發(fā)應(yīng)用程序。另外,谷歌還在2009年特別發(fā)布了針對初學(xué)者的Android Simple語言,該語言類似Basic語言。而在網(wǎng)頁編程語言方面,JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap等等都已經(jīng)支持Android開發(fā)。
而在Android系統(tǒng)底層方面,Android使用C/C++作為開發(fā)語言。
應(yīng)用程序(部分)
早期的Android應(yīng)用程序開發(fā),通常通過Android SDK(Android軟件開發(fā)包)下使用Java作為編程語言來開發(fā)應(yīng)用程序,但通過不同的軟件開發(fā)包,則使用的編程語言也不同。
例如開發(fā)者可以通過Android NDK(Android Native開發(fā)包)使用C語言或者C++語言來作為編程語言開發(fā)應(yīng)用程序。同時谷歌還推出了適合初學(xué)者編程使用的Simple語言,該語言類似微軟公司的Visual Basic語言。此外,谷歌公司還推出了Google App Inventor開發(fā)工具,該開發(fā)工具可以快速地構(gòu)建應(yīng)用程序,方便新手開發(fā)者。
Java開發(fā)方面
Android支持使用Java作為編程語言來開發(fā)應(yīng)用程序,而Android的Java開發(fā)方面從接口到功能,都有層出不窮的變化。考慮到Java虛擬機(jī)的效率和資源占用,谷歌重新設(shè)計了Android的Java,以便能提高效率和減少資源占用,因而與J2ME等不同。 Android結(jié)構(gòu)其中Activity等同于J2ME的MIDlet,一個 Activity 類(Class)負(fù)責(zé)創(chuàng)建視窗(Windows),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結(jié),達(dá)到復(fù)數(shù)程序同時運行效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(Stopped),甚至被系統(tǒng)清除(Kill)。
View等同于J2ME的Displayable,程序人員可以通過 View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設(shè)計layout,HTC的Android Hero手機(jī)即含有大量的widget。至于ViewGroup 是各種layout 的基礎(chǔ)抽象類(abstract class),ViewGroup之內(nèi)還可以有ViewGroup。View的構(gòu)造函數(shù)不需要再Activity中調(diào)用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Android的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關(guān),兩者之間通過Listener 結(jié)合在一起,每一個View都可以注冊一個event listener,例如:當(dāng)View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有BitMap等同于J2ME的Image。
C/C++開發(fā)方面
早期的Android開發(fā)只支持Java作為編程語言開發(fā)應(yīng)用程序,因而使得其他語言開發(fā)者只能望而卻步。2010年4月,谷歌正式對開發(fā)者發(fā)布了Android NDK,NDK允許開發(fā)者使用C/C++作為編程語言來為Android開發(fā)應(yīng)用程序,初版的NDK使得開發(fā)者看到了C/C++在Android開發(fā)中的希望。
但是,當(dāng)前版本的NDK在功能上還有很多局限性:NDK并沒有提供對應(yīng)用程序生命周期的維護(hù);NDK也不提供對Android系統(tǒng)中大量系統(tǒng)事件的支持;對于作為應(yīng)用程序交互接口的UI API,當(dāng)前版本的NDK中也沒有提供。但是相對于初版的NDK,現(xiàn)在的NDK已經(jīng)進(jìn)行了許多重大的功能改進(jìn)。
由此可見,NDK仍然需要完善和發(fā)展,相信未來隨著NDK的發(fā)展,NDK可以做得更多更好。
中介軟件
操作系統(tǒng)與應(yīng)用程序的溝通橋梁,應(yīng)用分為兩層:函數(shù)層(Library)和虛擬機(jī)(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同時包含了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收購,2007年初,Skia GL源碼被公開,目前Skia 也是Google Chrome 的圖形引擎。
Android的多媒體數(shù)據(jù)庫采用SQLite數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫又分為共用數(shù)據(jù)庫及私用數(shù)據(jù)庫。用戶可通過ContentResolver類(Column)取得共用數(shù)據(jù)庫。
Android的中間層多以Java 實現(xiàn),并且采用特殊的Dalvik 虛擬機(jī)(Dalvik Virtual Machine)。Dalvik虛擬機(jī)是一種“暫存器型態(tài)”(Register Based)的Java虛擬機(jī),變量皆存放于暫存器中,虛擬機(jī)的指令相對減少。
Dalvik虛擬機(jī)可以有多個實例(instance), 每個Android應(yīng)用程序都用一個自屬的Dalvik虛擬機(jī)來運行,讓系統(tǒng)在運行程序時可達(dá)到優(yōu)化。Dalvik 虛擬機(jī)并非運行Java字節(jié)碼(Bytecode),而是運行一種稱為.dex格式的文件。
硬件抽像層
Android 的 HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動模塊。HAL 的目的是為了把 Android framework 與 Linux kernel 隔開,讓 Android 不至過度依賴 Linux kernel,以達(dá)成 kernel independent 的概念,也讓 Android framework 的開發(fā)能在不考量驅(qū)動程序?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 只要說明“類型”,即 module ID,就可以取得操作函數(shù)。
系統(tǒng)內(nèi)核
Android 是運行于 Linux kernel之上,但并不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持,包括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ū)動程序移到 userspace,使得Linux driver 與 Linux kernel徹底分開。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),存儲器管理(Memory Management),程序管理(Process Management),網(wǎng)絡(luò)堆棧(Network Stack),驅(qū)動程序模型(Driver Model)等。下載Android源碼之前,先要安裝其構(gòu)建工具 Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
安全權(quán)限機(jī)制
Android本身是一個權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個應(yīng)用都以唯一的一個系統(tǒng)識別身份運行(Linux用戶ID與群組ID)。系統(tǒng)的各部分也分別使用各自獨立的識別方式。Linux就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開。
系統(tǒng)更多的安全功能通過權(quán)限機(jī)制提供。權(quán)限可以限制某個特定進(jìn)程的特定操作,也可以限制每個URI權(quán)限對特定數(shù)據(jù)段的訪問。
Android安全架構(gòu)的核心設(shè)計思想是,在默認(rèn)設(shè)置下,所有應(yīng)用都沒有權(quán)限對其他應(yīng)用、系統(tǒng)或用戶進(jìn)行較大影響的操作。這其中包括讀寫用戶隱私數(shù)據(jù)(聯(lián)系人或電子郵件),讀寫其他應(yīng)用文件,訪問網(wǎng)絡(luò)或阻止設(shè)備待機(jī)等。
安裝應(yīng)用時,在檢查程序簽名提及的權(quán)限,且經(jīng)過用戶確認(rèn)后,軟件包安裝器會給予應(yīng)用權(quán)限。從用戶角度看,一款A(yù)ndroid應(yīng)用通常會要求如下的權(quán)限:
撥打電話、發(fā)送短信或彩信、修改/刪除SD卡上的內(nèi)容、讀取聯(lián)系人的信息、讀取日程信的息,寫入日程數(shù)據(jù)、讀取電話狀態(tài)或識別碼、精確的(基于GPS)地理位置、模糊的(基于網(wǎng)絡(luò)獲取)地理位置、創(chuàng)建藍(lán)牙連接、對互聯(lián)網(wǎng)的完全訪問、查看網(wǎng)絡(luò)狀態(tài),查看WiFi狀態(tài)、避免手機(jī)待機(jī)、修改系統(tǒng)全局設(shè)置、讀取同步設(shè)定、開機(jī)自啟動、重啟其他應(yīng)用、終止運行中的應(yīng)用、設(shè)定偏好應(yīng)用、震動控制、拍攝圖片等。
一款應(yīng)用應(yīng)該根據(jù)自身提供的功能,要求合理的權(quán)限。用戶也可以分析一款應(yīng)用所需權(quán)限,從而簡單判定這款應(yīng)用是否安全。如一款應(yīng)用是不帶廣告的單機(jī)版,也沒有任何附加的內(nèi)容需要下載,那么它要求訪問網(wǎng)絡(luò)的權(quán)限就比較可疑。
轉(zhuǎn)載于:https://www.cnblogs.com/micro-chen/p/4717933.html
總結(jié)
以上是生活随笔為你收集整理的【Xamarin开发 Android 系列 4】 Android 基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧拉工程第57题:Square root
- 下一篇: 特斯拉2019全年交付36.75万 第