Android 系統背景及結構概述
1. Android 的歷史
Android 一詞的本意指“人形機器人”,安迪•魯賓 (Andy Rubin) 在 2003 年以此名創辦了 Android 公司並開始召集團隊研發 Android 系統。後於 2005 年被 Google 收購,安迪•魯賓隨後任 Google 工程部副總裁,繼續負責 Android 專案的研發工作。
安卓系統(Android)是一款基於 Linux 核心的自由開源的作業系統,主要使用於移動裝置,如智慧手機和平板電腦。 Google 在 2007 年 11 月 5 日正式對外公佈的了這款系統,並以“綠色機器人”的形狀作為其 Logo。早期由 Google 開發,後由開放手機聯盟(Open Handset Alliance)負責開發。
2. Android 的層級結構
Android 從系統架構上可分為四層結構,自下而上分別是:
Linux 核心
系統執行庫
應用程式框架
應用程式
2.1 Linux 核心
這一層是 Android 的核心繫統服務,位於 Android 系統的最底層,直接與硬體裝置互動。它依賴於 Linux,負責記憶體管理、程序管理、裝置管理、網路協議棧、安全性和驅動模型等系統級服務。
Linux 核心作為 Android 硬體和軟體之間的抽象層,為了更好的為 Android上層應用服務,Google 基於 Linux 做了一些的定製化的修改,具體的修改內容及原因會在後續的教程中陸續提到。
2.2 系統執行庫
這一層包含兩大塊:系統庫及 Android 執行時。
系統庫
這一部分其實就是 C/C++ 庫,這些庫在 Android 系統中通常以 so 的形式供不同的元件使用,開發者可以通過自己的應用程式使用這些庫提供的服務。Android 執行時
Android 採用 Java 作為開發語言,在其執行時中包含了 Java 核心庫的大多數功能,並使每一個 Android 應用程式都在它自己的程序中執行,都擁有一個獨立的 Dalvik 虛擬機器例項。Dalvik 可以保證一個裝置可以同時高效地執行多個虛擬系統。
2.3 應用程式框架
這一層是會和使用者直接打交道的一層,也是開發者最需要關注的一層。它包含了一系列的服務和系統,其中包括:
豐富而又可擴充套件的檢視(Views)
內容提供器(Content Providers)
資源管理器(Resource Manager)
通知管理器(Notification Manager)
活動管理器(Activity Manager)
2.4 應用程式
開發者的絕大部分工作都是在這一層完成,通過 Java 編寫的應用程式我們可以使用 Android 系統提供的服務來實現我們預期的功能。
每一個應用程式都對應一個 Dalvik 虛擬機器,利用跨平臺性質,基於 Android 框架開發的應用程式可以運行於任何一臺安裝有 Android 系統的平臺。
本教程的大多數內容也是針對這一層,我們將帶領你建立屬於自己的第一個 Android 應用程式,並一步步由淺入深的學習 Android 各個細枝末節,讓你可以更好的掌握 Android 應用程層序開發。
3. Android 各個版本、代號及 API 級別
從 Android 1.5 開始,Google 髮型每一個 Android 版本都用一個甜品的名稱作為代號,而代號首字母是從 C 開始以此按照字母順序排列,而直到 19 年釋出的 Android Q 開始,Google 棄用了這一傳統,改名為 Android 10。
名稱 | 版本號 | API等級 | 釋出時間 | 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. 小結
本節對 Android 系統的背景及結構做了一個簡單的講解,旨在讓大家有一個基本的認識,如果感興趣的話可以查閱相關資料進行深入瞭解。下一章我們將帶著大家完成開發環境的搭建,這也是進入開發之前的必經之路。