- Android移動應用開發項目教程
- 范美英主編
- 1296字
- 2021-03-23 15:33:02
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瀏覽器以及開發人員開發的其他應用程序。
- Flask Blueprints
- JavaScript高效圖形編程
- Angular UI Development with PrimeNG
- Java Web基礎與實例教程(第2版·微課版)
- Learning JavaScript Data Structures and Algorithms
- Cybersecurity Attacks:Red Team Strategies
- ElasticSearch Cookbook(Second Edition)
- Java Web開發基礎與案例教程
- 透視C#核心技術:系統架構及移動端開發
- Building Microservices with Go
- Learning Dynamics NAV Patterns
- R語言數據分析從入門到實戰
- ASP.NET Core 2 High Performance(Second Edition)
- 虛擬現實:引領未來的人機交互革命
- Learning PrimeFaces Extensions Development