Android 系統(tǒng)背景及結(jié)構(gòu)概述

1. Android 的歷史
Android 一詞的本意指“人形機(jī)器人”,安迪?魯賓 (Andy Rubin) 在 2003 年以此名創(chuàng)辦了 Android 公司并開始召集團(tuán)隊(duì)研發(fā) Android 系統(tǒng)。后于 2005 年被 Google 收購,安迪?魯賓隨后任 Google 工程部副總裁,繼續(xù)負(fù)責(zé) Android 項(xiàng)目的研發(fā)工作。
安卓系統(tǒng)(Android)是一款基于 Linux 內(nèi)核的自由開源的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦。 Google 在 2007 年 11 月 5 日正式對外公布的了這款系統(tǒng),并以“綠色機(jī)器人”的形狀作為其 Logo。早期由 Google 開發(fā),后由開放手機(jī)聯(lián)盟(Open Handset Alliance)負(fù)責(zé)開發(fā)。
2. Android 的層級結(jié)構(gòu)
Android 從系統(tǒng)架構(gòu)上可分為四層結(jié)構(gòu),自下而上分別是:
- Linux 內(nèi)核
- 系統(tǒng)運(yùn)行庫
- 應(yīng)用程序框架
- 應(yīng)用程序
2.1 Linux 內(nèi)核
這一層是 Android 的核心系統(tǒng)服務(wù),位于 Android 系統(tǒng)的最底層,直接與硬件設(shè)備交互。它依賴于 Linux,負(fù)責(zé)內(nèi)存管理、進(jìn)程管理、設(shè)備管理、網(wǎng)絡(luò)協(xié)議棧、安全性和驅(qū)動(dòng)模型等系統(tǒng)級服務(wù)。
Linux 內(nèi)核作為 Android 硬件和軟件之間的抽象層,為了更好的為 Android上層應(yīng)用服務(wù),Google 基于 Linux 做了一些的定制化的修改,具體的修改內(nèi)容及原因會在后續(xù)的教程中陸續(xù)提到。
2.2 系統(tǒng)運(yùn)行庫
這一層包含兩大塊:系統(tǒng)庫及 Android 運(yùn)行時(shí)。
-
系統(tǒng)庫
這一部分其實(shí)就是 C/C++ 庫,這些庫在 Android 系統(tǒng)中通常以 so 的形式供不同的組件使用,開發(fā)者可以通過自己的應(yīng)用程序使用這些庫提供的服務(wù)。 -
Android 運(yùn)行時(shí)
Android 采用 Java 作為開發(fā)語言,在其運(yùn)行時(shí)中包含了 Java 核心庫的大多數(shù)功能,并使每一個(gè) Android 應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的 Dalvik 虛擬機(jī)實(shí)例。Dalvik 可以保證一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。
2.3 應(yīng)用程序框架
這一層是會和用戶直接打交道的一層,也是開發(fā)者最需要關(guān)注的一層。它包含了一系列的服務(wù)和系統(tǒng),其中包括:
- 豐富而又可擴(kuò)展的視圖(Views)
- 內(nèi)容提供器(Content Providers)
- 資源管理器(Resource Manager)
- 通知管理器(Notification Manager)
- 活動(dòng)管理器(Activity Manager)
2.4 應(yīng)用程序
開發(fā)者的絕大部分工作都是在這一層完成,通過 Java 編寫的應(yīng)用程序我們可以使用 Android 系統(tǒng)提供的服務(wù)來實(shí)現(xiàn)我們預(yù)期的功能。
每一個(gè)應(yīng)用程序都對應(yīng)一個(gè) Dalvik 虛擬機(jī),利用跨平臺性質(zhì),基于 Android 框架開發(fā)的應(yīng)用程序可以運(yùn)行于任何一臺安裝有 Android 系統(tǒng)的平臺。
本教程的大多數(shù)內(nèi)容也是針對這一層,我們將帶領(lǐng)你建立屬于自己的第一個(gè) Android 應(yīng)用程序,并一步步由淺入深的學(xué)習(xí) Android 各個(gè)細(xì)枝末節(jié),讓你可以更好的掌握 Android 應(yīng)用程層序開發(fā)。
3. Android 各個(gè)版本、代號及 API 級別
從 Android 1.5 開始,Google 發(fā)型每一個(gè) Android 版本都用一個(gè)甜品的名稱作為代號,而代號首字母是從 C 開始以此按照字母順序排列,而直到 19 年發(fā)布的 Android Q 開始,Google 棄用了這一傳統(tǒng),改名為 Android 10。
名稱 | 版本號 | API等級 | 發(fā)布時(shí)間 | BuildVersion |
---|---|---|---|---|
Q | 10.0 | 29 | 2019-09 | BuildVersionCodes.Q |
Pie | 9.0 | 28 | 2018-08 | BuildVersionCodes.P |
Oreo | 8.1 | 27 | 2017-12 | BuildVersionCodes.OMr1 |
Oreo | 8.0 | 26 | 2017-08 | BuildVersionCodes.O |
Nougat | 7.1 | 25 | 2016-12 | BuildVersionCodes.NMr1 |
Nougat | 7.0 | 24 | 2016-08 | BuildVersionCodes.N |
Marshmallow | 6.0 | 23 | 2015-08 | BuildVersionCodes.M |
Lollipop | 5.1 | 22 | 2015-03 | BuildVersionCodes.LollipopMr1 |
Lollipop | 5.0 | 21 | 2014-11 | BuildVersionCodes.Lollipop |
Kitkat Watch | 4.4W | 20 | 2014-06 | BuildVersionCodes.KitKatWatch |
Kitkat | 4.4 | 19 | 2013-10 | BuildVersionCodes.KitKat |
Jelly Bean | 4.3 | 18 | 2013-07 | BuildVersionCodes.JellyBeanMr2 |
Jelly Bean | 4.2-4.2.2 | 17 | 2012-11 | BuildVersionCodes.JellyBeanMr1 |
Jelly Bean | 4.1-4.1.1 | 16 | 2012-06 | BuildVersionCodes.JellyBean |
Ice Cream Sandwich | 4.0.3-4.0.4 | 15 | 2011-12 | BuildVersionCodes.IceCreamSandwichMr1 |
Ice Cream Sandwich | 4.0-4.0.2 | 14 | 2011-10 | BuildVersionCodes.IceCreamSandwich |
Honeycomb | 3.2 | 13 | 2011-06 | BuildVersionCodes.HoneyCombMr2 |
Honeycomb | 3.1.x | 12 | 2011-05 | BuildVersionCodes.HoneyCombMr1 |
Honeycomb | 3.0.x | 11 | 2011-02 | BuildVersionCodes.HoneyComb |
Gingerbread | 2.3.3-2.3.4 | 10 | 2011-02 | BuildVersionCodes.GingerBreadMr1 |
Gingerbread | 2.3-2.3.2 | 9 | 2010-11 | BuildVersionCodes.GingerBread |
Froyo | 2.2.x | 8 | 2010-06 | BuildVersionCodes.Froyo |
Eclair | 2.1.x | 7 | 2010-01 | BuildVersionCodes.EclairMr1 |
Eclair | 2.0.1 | 6 | 2009-12 | BuildVersionCodes.Eclair01 |
Eclair | 2.0 | 5 | 2009-11 | BuildVersionCodes.Eclair |
Donut | 1.6 | 4 | 2009-09 | BuildVersionCodes.Donut |
Cupcake | 1.5 | 3 | 2009-05 | BuildVersionCodes.Cupcake |
Base | 1.1 | 2 | 2009-02 | BuildVersionCodes.Base11 |
Base | 1.0 | 1 | 2008-10 | BuildVersionCodes.Base |
4. 小結(jié)
本節(jié)對 Android 系統(tǒng)的背景及結(jié)構(gòu)做了一個(gè)簡單的講解,旨在讓大家有一個(gè)基本的認(rèn)識,如果感興趣的話可以查閱相關(guān)資料進(jìn)行深入了解。下一章我們將帶著大家完成開發(fā)環(huán)境的搭建,這也是進(jìn)入開發(fā)之前的必經(jīng)之路。