iOS程序猿的Android之路--Android的前世今生


筆者iOS程序猿一枚抡医,和大多數(shù)攻城獅一樣早敬,在某一語(yǔ)言或某一領(lǐng)域做了一段時(shí)間后會(huì)出現(xiàn)技術(shù)增長(zhǎng)的瓶頸,在這個(gè)深度發(fā)展受阻的時(shí)候水孩,不妨以廣度發(fā)展作為新的切入口镰矿,在不同語(yǔ)言的類比之后融匯貫通,可能會(huì)有新的感悟俘种,以下筆者會(huì)以自己的學(xué)習(xí)軌跡為線索秤标,分階段分享學(xué)習(xí)Android的收獲與感悟。
萬(wàn)語(yǔ)千言宙刘,就先從Android的前世今生說(shuō)起吧抛杨!

Android 的來(lái)歷

| |Android由Android公司創(chuàng)造,后被Google收購(gòu)荐类。|
|: ------ : | :-----------------------------------------------------------------------|
| 2007.11 | Google發(fā)布Android 1.0 手機(jī)操作系統(tǒng),市場(chǎng)反應(yīng)冷淡茁帽。|
| 2008.9 | 第一部Android手機(jī)在紐約發(fā)布,Android操作系統(tǒng)逐漸為手機(jī)廠商認(rèn)可潘拨。|
| 2009.9 | Google發(fā)布Android1.5吊输,提供了藍(lán)牙支持,大受開發(fā)者歡迎铁追。|
| 2010.1 | Google在美國(guó)總部發(fā)布首款合作品牌手機(jī)Nexus One.

Android 的框架結(jié)構(gòu)

Android系統(tǒng)的底層建立在Linux系統(tǒng)之上季蚂,該平臺(tái)由 操作系統(tǒng)中間件琅束、用戶界面應(yīng)用軟件 4層組成扭屁,它采用一種軟件疊層(Software Stack)的方式進(jìn)行構(gòu)建。其使層與層之間相互分離涩禀,明確各層分工分料滥。這種分工方式保證了層與層之間的低耦合,當(dāng)下層的層內(nèi)或?qū)酉掳l(fā)生改變時(shí)艾船,上層應(yīng)用程序無(wú)需任何改變葵腹。
無(wú)圖無(wú)真相

Android系統(tǒng)結(jié)構(gòu)層圖.png

從上圖我們可以看出,Android操作系統(tǒng)的體系結(jié)構(gòu)可分為4層屿岂,由上到下依次是應(yīng)用程序践宴、應(yīng)用程序框架、核心類庫(kù)和Linux內(nèi)核爷怀,其中第三層還包括Android運(yùn)行時(shí)的環(huán)境阻肩。下面分別來(lái)講解各個(gè)部分。

1. 應(yīng)用程序?qū)?/h3>

Android 連同一個(gè)核心應(yīng)用程序包一起發(fā)布霉撵,該應(yīng)用程序包包括E-mail客戶端磺浙、SMS短消息程序洪囤、日歷、地圖撕氧、瀏覽器瘤缩、聯(lián)系人管理程序等。所有的應(yīng)用程序都是用Java編寫的伦泥。

2. 應(yīng)用程序框架

開發(fā)者完全可以訪問核心應(yīng)用程序所使用的API框架剥啤。該應(yīng)用程序框架架構(gòu)用來(lái)簡(jiǎn)化組件軟件的重用,任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其他的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)不脯。該應(yīng)用程序重用機(jī)制使得組件可以被用戶替換府怯。

以下所有的應(yīng)用程序都由一系列的服務(wù)和系統(tǒng)組成,包括:

| 應(yīng)用 |功能|
|------ : | :-----------------------------------------------------------------------|
| 一個(gè)可擴(kuò)展的視圖(Views| 可以用來(lái)創(chuàng)建應(yīng)用程序防楷,包括列表(lists)牺丙、網(wǎng)絡(luò)(grids)、文本框(text boxes)复局、按鈕(buttons)冲簿,甚至是一個(gè)可嵌入的Web瀏覽器。|
| 內(nèi)容管理器(Content Providers | 使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù))亿昏,或者共享它們自己的數(shù)據(jù)峦剔。|
| ** 一個(gè)資源管理器(Resource Manager)** | 提供非代碼資源的訪問,如本地字符串角钩、圖形和分層文件(layout files)吝沫。|
| 一個(gè)通知管理器(Notification Manager | 使得應(yīng)用程序可以在狀態(tài)欄中顯示客戶通知信息。|
| ** 一個(gè)活動(dòng)類管理器(Activity Manager)** | 用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能递礼。|

3. Android函數(shù)庫(kù)

Android包括一個(gè)被Android系統(tǒng)中各種不同組件所使用的C/C++集庫(kù)惨险。該庫(kù)通過(guò)Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。

以下是一些主要的核心庫(kù):

核心庫(kù) 功能
系統(tǒng)C庫(kù) 一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc)宰衙,專門為基于Embedded Linux的設(shè)備定制平道。
媒體庫(kù) 基于PacketVideo OpenCORE;該庫(kù)支持錄放供炼,并且可以錄制許多流行的音頻視頻格式一屋,還有靜態(tài)映像文件包括MPEG4、H.264袋哼、MP3冀墨、AAC、JPG涛贯、PNG诽嘉。
SurfaceManager 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供2D和3D圖層的無(wú)縫融合。
LibWebCore 一個(gè)最新的Web瀏覽器引擎虫腋,用來(lái)支持Android瀏覽器和一個(gè)可嵌入的Web視圖骄酗。
SGL 一個(gè)內(nèi)置的2D圖形引擎。
3D libraries 基于OpenGL ES 1.0 APIs實(shí)現(xiàn)悦冀;該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速趋翻。
FreeType 位圖(bitmap)和向量(vector)字體顯示。
SQLite 一個(gè)對(duì)于所以應(yīng)用程序可用盒蟆、功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎踏烙。

4. Android運(yùn)行庫(kù)

Android包括了一個(gè)核心庫(kù)历等,該核心庫(kù)提供了Java編程語(yǔ)言核心庫(kù)的大多數(shù)功能讨惩。

每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例寒屯。Dalvik是針對(duì)同時(shí)高效地運(yùn)行多個(gè)VMs實(shí)現(xiàn)的农渊。Dalvik虛擬機(jī)執(zhí)行.dex的Dalvik可執(zhí)行文件患蹂,該格式文件針對(duì)最小內(nèi)存使用做了優(yōu)化。該虛擬機(jī)是基于寄存器的砸紊,所有的類都是經(jīng)由Java匯編器編譯传于,然后通過(guò)SDK中的DX工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。

Dalvik虛擬機(jī)依賴于Linux的一些功能醉顽,比如線程機(jī)制和底層內(nèi)存管理機(jī)制沼溜。

5. Linux內(nèi)核

Android的核心系統(tǒng)服務(wù)依賴于Linux內(nèi)核,如安全性游添、內(nèi)存管理系草、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型唆涝。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的硬件抽象層找都。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市廊酣,隨后出現(xiàn)的幾起案子能耻,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晓猛,死亡現(xiàn)場(chǎng)離奇詭異饿幅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戒职,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門栗恩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人帕涌,你說(shuō)我怎么就攤上這事摄凡。” “怎么了蚓曼?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵亲澡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我纫版,道長(zhǎng)床绪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任其弊,我火速辦了婚禮癞己,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梭伐。我一直安慰自己痹雅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布糊识。 她就那樣靜靜地躺著绩社,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赂苗。 梳的紋絲不亂的頭發(fā)上愉耙,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音拌滋,去河邊找鬼朴沿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛败砂,可吹牛的內(nèi)容都是我干的赌渣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼昌犹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锡垄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起祭隔,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤货岭,失蹤者是張志新(化名)和其女友劉穎路操,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千贯,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屯仗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了搔谴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魁袜。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖敦第,靈堂內(nèi)的尸體忽然破棺而出峰弹,到底是詐尸還是另有隱情,我是刑警寧澤芜果,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布鞠呈,位于F島的核電站,受9級(jí)特大地震影響右钾,放射性物質(zhì)發(fā)生泄漏蚁吝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一舀射、第九天 我趴在偏房一處隱蔽的房頂上張望窘茁。 院中可真熱鬧,春花似錦脆烟、人聲如沸山林。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捌朴。三九已至,卻和暖如春张抄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洼怔。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工署惯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人镣隶。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓极谊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親安岂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子轻猖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容