- Android物聯網開發細致入門與最佳實踐
- 李天祥
- 1580字
- 2019-09-30 13:23:50
1.3 Android系統架構概覽
Android系統是一個移動設備的開發平臺,其軟件層次結構包括操作系統(OS)、中間件(MiddleWare)和應用程序(Application)。根據Android的軟件框圖,其軟件層次結構自下而上分為以下四層。
(1)操作系統層(OS)。
(2)各種庫(Libraries)和Android運行環境(RunTime)。
(3)應用程序框架(Application Framework)。
(4)應用程序(Application)。
上述各個層的具體結構如圖1-2所示。

圖1-2 Android操作系統的組件結構圖
在本節的內容中,將詳細介紹Android操作系統的幾本組件結構方面的知識。
1.3.1 底層操作系統層(OS)
因為Android源于Linux,使用Linux內核,所以Android使用Linux 2.6作為操作系統。Linux2.6是一種標準的技術,Linux也是一個開放的操作系統。Android對操作系統的使用包括核心和驅動程序兩部分,Android的Linux核心為標準的Linux 2.6內核,Android更多的是需要一些與移動設備相關的驅動程序。主要的驅動如下所示。
顯示驅動(Display Driver):是常用的基于Linux的幀緩沖(Frame Buffer)驅動。
Flash內存驅動(Flash Memory Driver):是基于MTD的Flash驅動程序。
照相機驅動(Camera Driver):常用基于Linux的V4L(Video for Linux)驅動。
音頻驅動(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅動。
Wi-Fi驅動(Camera Driver):基于IEEE 802.11標準的驅動程序。
鍵盤驅動(KeyBoard Driver):作為輸入設備的鍵盤驅動。
藍牙驅動(Bluetooth Driver):基于IEEE 802.15.1標準的無線傳輸技術。
Binder IPC驅動:Android一個特殊的驅動程序,具有單獨的設備節點,提供進程間通信的功能。
Power Management(能源管理):用于管理電池電量等信息。
1.3.2 運行庫(Libraries)和Android運行環境(RunTime)
本層次對應一般嵌入式系統,相當于中間件層次。Android的本層次分成兩個部分,一個是各種庫,另一個是Android運行環境。本層次的內容大多是使用C和C++實現的,其中包含了如下所示的各種庫。
C庫:C語言的標準庫,也是系統中一個底層的庫,C庫是通過Linux的系統調用來實現的。
多媒體框架(MediaFrameword):這部分內容是Android多媒體的核心部分,基于PacketVideo(即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一部分是音頻、視頻的回放(PlayBack),另一部分是音視頻的記錄(Recorder)。
SGL:2D圖像引擎。
SSL:即Secure Socket Layer位于TCP/IP協議與各種應用層協議之間,為數據通信提供安全支持。
OpenGL ES:提供對3D的支持。
界面管理工具(Surface Management):提供對管理顯示子系統等功能。
SQLite:一個通用的嵌入式數據庫。
WebKit:網絡瀏覽器的核心。
FreeType:位圖和矢量字體的功能。
一般情況下,Android的各種庫是以系統中間件的形式提供的,它們的顯著特點是與移動設備平臺的應用密切相關。另外,Android的運行環境主要是指Dalvik(虛擬機)技術。Dalvik和一般的Java虛擬機(Java VM)是有區別的。
Java虛擬機:執行的是Java標準的字節碼(Bytecode)。在最新的Android 6.0版本中,將使用ART為默認的運行環境,Java虛擬機只是作為一個備選項即將被淘汰。
Dalvik:執行的是Dalvik可執行格式(.dex)中執行文件。在執行的過程中,每一個應用程序即一個進程(Linux的一個Process)。兩者最大的區別在于Java VM是基于棧的虛擬機(Stack-based),而Dalvik是基于寄存器的虛擬機(Register-based)。顯然,后者最大的好處是可以根據硬件實現更大的優化,這更適合移動設備的特點。
1.3.3 Application Framework(應用程序框架)
在整個Android系統中,和應用開發最相關的是Application Framework,在這一層上,Android為應用程序層的開發者提供了各種功能強大的APIs,這實際上是一個應用程序的框架。由于上層的應用程序是以Java構建的。在本層提供了程序中所需要的各種控件,例如:Views(視圖組件),List(列表),Grid(柵格),Text Box(文本框),Button(按鈕),甚至還有一個嵌入式的Web瀏覽器。
一個基本的Android應用程序可以利用應用程序框架中的以下五個部分。
Activity:活動。
Broadcast Intent Receiver:廣播意圖接收者。
Service:服務。
Content Provider:內容提供者。
Intent and Intent Filter:意圖和意圖過濾器。
1.3.4 頂層應用程序(Application)
Android的應用程序主要是用戶界面(User Interface)方面的,本層通常使用Java語言編寫,其中還可以包含各種被放置在“res”目錄中的資源文件。Java程序和相關資源在經過編譯后,會生成一個APK包。Android本身提供了主屏幕(Home)、聯系人(Contact)、電話(Phone)、瀏覽器(Browers)等眾多核心應用。同時應用程序的開發者還可以使用應用程序框架層的API實現自己的程序。這也是Android開源的巨大潛力的體現。
- Linux網絡管理與配置(第2版)
- Mobile-first Bootstrap
- Instant Handlebars.js
- 高性能Linux服務器構建實戰:運維監控、性能調優與集群應用
- Ganglia系統監控
- 開源安全運維平臺OSSIM疑難解析:入門篇
- 深入Linux內核架構與底層原理(第2版)
- STM32庫開發實戰指南:基于STM32F4
- 完美應用RHEL 8
- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- Linux系統最佳實踐工具:命令行技術
- Linux應用大全 基礎與管理
- Microsoft Hyper-V Cluster Design
- iOS Programming Cookbook
- Responsive Web Design by Example:Beginner's Guide(Second Edition)