官术网_书友最值得收藏!

1.1 Android簡介

1.1.1 Android發展簡史

Android平臺采用了整合的策略思想,包括底層的Linux操作系統、中間層的中間件和上層的應用程序。從2007年至今,Android經歷了多種版本,由于其固有的平臺特征,如今在手機市場中的占有率居高不下。

Android最早發布的版本是2007年11月的Android 1.0 beta,迄今為止已經發布了多個更新版本。這些更新版本是以前一個版本為基礎修復并添加新功能。

從2009年4月開始,Android操作系統改用甜點名稱來作為版本代號,這些版本按照大寫字母的順序來進行命名,具體有:紙杯蛋糕(Cupcake)、甜甜圈(Donut)、閃電泡芙(éclair)、凍酸奶(Froyo)、姜餅(Gingerbread)、蜂巢(Honeycomb)、冰淇淋三明治(Ice Cream Sandwich)、果凍豆(Jelly Bean)、奇巧(Kit Kat)、棒棒糖(Lollipop)、棉花糖(Marshmallow)、牛軋糖(Nougat)、奧利奧(Oreo)、餡餅(Pie)。此外,Android操作系統曾經還有兩個預發布的內部版本,它們分別是鐵臂阿童木(Astro)和發條機器人(Bender)。

截至2018年9月,Android發布的各版本編號、中/英文名稱、發布時間以及API Level的對應關系如表1-1所示。

表1-1 Android版本進程

(續)

1.1.2 Android系統架構

Android系統架構如圖1-1所示。從圖中可以看出Android系統架構分為4層,從下到上分別是Linux內核層、系統運行庫層、應用程序框架層和應用程序層。圖中的每一層都使用其下面各層所提供的服務。

Android以Linux操作系統內核為基礎,借助Linux內核服務實現硬件設備驅動、進程和內存管理、網絡協議棧、電源管理、無線通信等核心功能。

內核驅動和用戶軟件之間還存在硬件抽象層(Hardware Abstract Layer,HAL)。它對Linux內核驅動程序進行了封裝,將硬件抽象化,屏蔽了底層的實現細節。它將Android應用程序框架層與Linux內核層的設備驅動隔離,使應用程序框架的開發盡量獨立于具體的驅動程序,從而減少了對Linux內核的依賴。HAL規定了一套應用層對硬件層讀寫和配置的統一接口,本質上就是將硬件的驅動分為用戶空間和內核空間兩個層面:Linux內核驅動程序運行于內核空間,硬件抽象層運行于用戶空間。因為在Android官方系統架構圖中沒有標明HAL,所以該層在圖1-1中用虛線框表示。

系統運行庫層由系統類庫和Android運行時構成。其中,大部分系統類庫用C/C++語言編寫,它們提供的功能通過Android應用程序框架為開發者所使用。Android運行時包含核心庫和Dalvik虛擬機兩部分。核心庫主要提供Android的核心API(Application Programming Interface,應用程序接口)。Dalvik虛擬機是能適應低內存、低處理器速度的移動設備環境的基于Apache并被改進的Java虛擬機。它依賴于Linux內核,實現了進程隔離與線程調試管理、安全和異常管理、垃圾回收等重要功能。需要注意的是,Dalvik虛擬機并非傳統意義上的Java虛擬機(Java Virtual Machine,JVM),它不僅沒有按照Java虛擬機的規范來實現,而且兩者不兼容。從本質上來看,Dalvik虛擬機基于寄存器,而JVM基于棧。一般認為,基于寄存器的實現雖然更多依賴于具體的CPU結構,硬件通用性稍差,但其使用等長指令,在效率速度上較傳統JVM更有優勢。

圖1-1 Android系統架構

應用程序框架層提供開發Android應用程序所需的一系列類庫,使開發人員可以進行快速的應用程序開發,方便重用組件,也可以通過繼承實現個性化的擴展。

Android平臺的應用程序層包括各種與用戶直接交互的應用程序,或用Java語言編寫的運行于后臺的服務程序。例如,智能手機上實現的常見基本功能程序,諸如短信客戶端程序、電話撥號程序、圖片瀏覽器、日歷、游戲、地圖、Web瀏覽器以及開發人員開發的其他應用程序。

主站蜘蛛池模板: 日土县| 社旗县| 中卫市| 贵德县| 达尔| 岳池县| 屯昌县| 许昌县| 莆田市| 抚宁县| 石景山区| 昌吉市| 泸西县| 上高县| 阿荣旗| 金昌市| 广水市| 运城市| 福贡县| 平潭县| 松桃| 寿阳县| 巫溪县| 巴林右旗| 云梦县| 呼伦贝尔市| 灵台县| 岳西县| 威信县| 塔河县| 洱源县| 青龙| 赣州市| 师宗县| 伊宁市| 葵青区| 合川市| 云安县| 巫溪县| 新建县| 抚松县|