初識安卓系統。

1.安卓系統
1.1安卓系統簡介

安卓系統《Android》 是一種由 Google 公司和開放手機聯盟領導及開發的操作系統,主要用於移動設備,如智能手機和平板電腦。

它是基於開放源代碼的 Linux 內核構建的,並且提供了一套豐富的應用程序接口 (API,Application Program Interface,計算機和應用程序之間交互所使用的一套標準,是兩者之間信息傳輸和發送指令的媒介。

) 和軟件開發工具《SDK,Software Development Kit,為輔助開發特定類別的軟件,方便工程師開發使用,對軟件的操作系統、軟件、硬件、開發工具等一系列開發載體做出的集成》,供開發人員在設備上創建自定義應用程序。

安卓系統的界面風格通常使用拖動式菜單,並具有豐富的個性化選項,使用戶可以調整設備的外觀和功能。

它也提供了許多內置應用程序,如電子郵件客戶端、網絡瀏覽器、通訊錄、短信、相機、電話等。

1.2安卓系統的優缺點

安卓系統的優點:1》開源《Open Source,指開放系統的源代碼》性,安卓是開源的,這意味著開發人員可以自由地使用和修改源代碼,並且不需要支付任何許可費。

這使得開發人員能夠輕松地創建自定義隻讀內存《ROM,Read-Only Memory,隻讀內存》 並將其發佈到社區中。

2》豐富的應用程序生態系統,安卓擁有世界上最大的應用程序生態系統,有許多應用程序和遊戲可供選擇。

3》硬件多樣性:安卓支持許多不同的硬件平臺,這意味著用戶可以在各種不同的設備中使用安卓系統。

4》自定義性,安卓提供了豐富的個性化選項,使用戶能夠調整設備的外觀和功能。

安卓系統的缺點:1》安卓系統更新可能不及時,由於安卓系統有許多不同的制造商和設備,因此更新可能會慢於其他操作系統。

2》安全性問題,安卓系統過於自由化,冒牌的應用特別多,存在潛藏的安全隱患,例如惡意軟件和黑客攻擊。

3》耗電量較大嗎,某些安卓系統設備可能會比其他操作系統的設備更耗電。

4》安卓系統對硬件的依賴性較大,可能需要硬件設備的兼容性、性能、配置等各方面滿足要求,才能發揮出安卓系統的最大優勢。

2. 安卓系統體系結
2.1 安卓系統結構的內容


圖1 安卓系統體系結構

安卓體系結構是指安卓操作系統的組成部分和它們之間的關系。

安卓體系結構的示意圖見圖1。

安卓體系結構包括以下幾個部分:

1》 應用程序層《Applications》,這是安卓系統最頂層的部分,是用戶最直接使用的部分。

它包括所有的應用程序和用戶界面,比如圖1中的H桌面《Home》、通訊錄《Contents》、電話《Phone》和瀏覽器《Browser》。

2》 應用程序框架層《Applicaiton Framework》,這一層提供了應用程序層所需的各種服務和功能,也就是上文中提到的API。

應用程序運行時所需要的活動管理器《Activity Manager》、窗口管理器《Window Manager》、內容提供者《Content Providers》、視圖系統《View system》、通知管理器《Notification Manager》、包管理器《Package Manager》、電話管理器《Telephony Manager》、資源管理器《Resource Manager》、位置管理器《Location Manager》、即時通訊服務《XMPP Service》等功能都由應用程序框架層提供。

3》 核心系統庫層《Libraries、Android Runtime》:這一層提供了底層的系統功能,主要包括原生的C/C++程序庫和Android運行時庫兩部分。

原生的C/C++程序庫主要包括界面管理器《Surface Manager》、多媒體《Media FrameWork》、關系型數據庫引擎《SQLite》、3D繪圖庫《OpenGL|ES》、字體引擎《FreeType》、瀏覽器引擎《Webkit》、SGL《2D繪圖引擎》、SSL《安全套接字協議》等。

Android運行時庫,主要包括核心類庫《Core Libraries》和Dalvik虛擬機《Dalvik Virtual Machine》。

對於安卓5.0以上的系統版本,不再使用Dalvik虛擬機運行安卓代碼,改為用ART虛擬機運行。

4》 操作系統內核層《Linux Kernal》:這一層是安卓操作系統的核心部分,負責管理系統的硬件資源和提供系統的底層服務。

由於安卓系統是基於Linux操作系統開發的,所以這裡的系統內核層指的是Linux內核。

考慮到安卓應用程序在運行時核心系統庫層通過使用操作系統內核層的驅動來和硬件交互,因此很多專家把硬件分離出來單獨作為一層,叫做硬件抽象層《HAL,Hardware Abstraction Layer》,這裡不考慮硬件抽象層。

操作系統內核層主要由軟件驅動構成,包括顯示驅動《Display Driver》、相機驅動《Camera Driver》、藍牙驅動《Blooth Driver》、閃存驅動《Flash Memory Driver》、進程通信驅動《Binder Driver》、通用穿行總線驅動《USB Driver》、小鍵盤驅動《keypad Driver》、無線網驅動《WiFi Driver》、音頻驅動《Audio Drivers》、電源管理器《Power Management》。

2.2 安卓體系結構間的關系

安卓體系結構之間的關系如下:1》應用程序層是最頂層的部分,是用戶最直接使用的部分。

2》應用程序框架層位於應用程序層之下,負責提供應用程序層所需的各種服務和功能。

3》核心系統庫層位於應用程序框架層之下,負責提供底層的系統功能。

4》操作系統內核層是安卓操作系統的核心部分,位於核心系統庫層之下,負責管理系統的硬件資源和提供系統的底層服務。

這些部分是層級關系,各個部分之間通過接口相互配合。

應用程序層需要調用應用程序框架層提供的服務,應用程序框架層需要調用核心系統庫層提供的功能,核心系統庫層需要調用操作系統內核層提供的服務。

各個部分共同為用戶提供完善的移動設備使用體驗。

從移動應用程序的代碼調用邏輯來看,當用戶和應用程序層交互時,安卓代碼打包好的應用程序會在Android運行時庫運行,實際上是在執行Dex字節碼文件。

在這個過程中會通過應用程序框架層提供的JAVA API接口實現各種各樣的功能和服務。

而應用程序框架層提供的JAVA API接口在調用硬件驅動的時候,又會通過JAVA原生接口《JNI,Java Native Interface》調用核心系統庫層的C/C++原生程序庫。

考慮到C/C++代碼操控底層硬件的優勢包括:c語言生態豐富,發展較早不需要重復寫一些復雜的邏輯,C/C++反編譯的難度更大等,因此,C/C++原生程序庫會調用系統內核的驅動來和硬件進行交互。

在多數情況下,重要的業務邏輯會放在C/C++中。

3. 安卓系統版本與處理器
3.1 安卓系統版本

安卓系統版本是指安卓操作系統的版本號,不同的安卓系統版本代表著不同的功能和特性。

例如,安卓11是一個新的安卓系統版本,它提供了新的功能和特性,而安卓10是舊的安卓系統版本,它提供的功能和特性可能較少。

API等級是指安卓系統提供的API的版本號,不同的API等級代表著安卓系統提供的不同功能和服務。

例如,API等級30代表著安卓系統提供了30版本的API,這些API可以提供新的功能和特性。

安卓系統版本和API等級之間存在一定的關系,每個安卓系統版本都會提供一個或多個API等級的API。

例如,安卓11系統版本可能會提供API等級30、31和32等多個API等級的API。

但是,並不是所有的安卓系統版本都會提供所有的API等級的API。

例如,安卓11系統版本可能隻提供API等級30和31的API,而不提供API等級29的API。

這意味著,如果開發人員使用了API等級為29的安卓SDK開發應用程序,則該應用程序可能無法在安卓11系統版本中運行。

安卓版本與API等級的對應關系見圖2。

初識安卓系統。
圖2 安卓系統與API等級的關系

3.2 安卓系統處理器

按照處理器《CPU,central processing unit》型號的不同,可將安卓系統做如下劃分:armeabi架構、arm64架構、x86架構和x86_64架構。

其中armeabi架構指的是基於32位ARM處理器開發的安卓系統,arm64架構指的是基於64位arm架構開發的安卓系統,x86架構指的是基於Intel32位處理器開發的安卓系統,x86_64指的是基於Intel64位處理器開發的安卓系統。