libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...
本節書摘來自異步社區《Android Studio應用開發實戰詳解》一書中的第1章,第1.3節Android系統架構,作者 王翠萍,更多章節內容可以訪問云棲社區“異步社區”公眾號查看
1.3 Android系統架構
Android系統是一個移動設備的開發平臺,其軟件層次結構包括操作系統(OS)、中間件(Middle Ware)和應用程序(Application)。根據Android的軟件框圖,其軟件層次結構自下而上依次分為以下4層。
(1)操作系統層(OS)。
(2)各種庫(Libraries)和Android運行環境(RunTime)。
(3)應用程序框架(Application Framework)。
(4)應用程序(Application)。
上述各個層的具體結構如圖2021年05月26日所示。
圖2021年05月26日 Android操作系統的組件結構圖
在本節的內容中,將詳細講解Android系統各個層次的基本知識。
1.3.1 最底層的操作系統層(OS)——C/C++實現
Android系統的底層內核基于Linux操作系統,當前最新版本的Android的核心為標準Linux 3.10內核。Android底層的操作系統層(OS)使用C和C++語言編寫實現,其實Android系統就是Linux系統,只是Android系統充分利用了已有的機制,盡量使用標準化的內容,如驅動程序,并且做出必要的擴展。Android靈活充分使用了內核到用戶空間的接口,這主要表現在字符設備節點、Sys文件系統、Proc文件系統和不增加系統調用。
在Android系統中,包含的內核組件如下所示:
Binder驅動程序(用戶IPC機制);
Logger驅動程序(用戶系統日志);
timed_output驅動框架;
timed_gpio驅動程序;
lowmemorykill組件;
ram_console組件;
Ashmem驅動程序;
Alarm驅動程序;
pmem驅動程序;
ADB Garget驅動程序;
Android Paranoid網絡。
1.3.2 Android的硬件抽象層——C/C++實現
其實Android生態系統的架構十分清晰,自下而上經典的模型分別為:Linux驅動、Android硬件抽象層、Android本地框架、Android的Java框架、Android的Java應用程序。因為Android系統需要運行于在不同的硬件平臺上,所以需要具有很好的可移植性。其中Android系統的硬件抽象層負責建立Android系統和硬件設備之間的聯系。
對于標準化比較高的子系統來說,Android系統使用完全標準的Linux驅動,例如輸入設備(Input-Event)、電池信息(Power Supply)、無線局域網(WiFi協議和驅動)和藍牙(Bluetooth協議和驅動)。
對于Android系統的硬件抽象層來說,主要實現了與移動設備相關的驅動程序,主要包含了如下所示的驅動系統。
顯示驅動(Display Driver):常用基于Linux的幀緩沖(Frame Buffer)驅動。
Flash內存驅動(Flash Memory Driver):是基于MTD的Flash驅動程序。
照相機驅動(Camera Driver):常用基于Linux的v4l(Video for)驅動。
音頻驅動(Audio Driver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅動。
WiFi驅動(Camera Driver):基于IEEE 802.11標準的驅動程序。
鍵盤驅動(KeyBoard Driver):作為輸入設備的鍵盤驅動。
藍牙驅動(Bluetooth Driver):基于IEEE 802.15.1標準的無線傳輸技術。
Binder IPC驅動:Andoid一個特殊的驅動程序,具有單獨的設備節點,提供進程間通信的功能。
Power Management(能源管理):管理電池電量等信息。
1.3.3 各種庫(Libraries)和Android運行環境(RunTime)——中間層
可以將Android系統的中間層次分為兩個部分,一個是各種庫,另一個是Android運行環境。Android系統的中間層次的內容大多是使用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運行環境主要是指Android虛擬機技術:Dalvik。Dalvik虛擬機與Java虛擬機(Java VM)不同,它執行的不是Java標準的字節碼(Bytecode),而是Dalvik可執行格式(.dex)中的執行文件。在執行的過程中,每一個應用程序即一個進程(Linux的一個Process)。二者最大的區別在于Java VM是基于棧的虛擬機(Stack-based),而Dalvik是基于寄存器的虛擬機(Register-based)。顯然,后者最大的好處在于可以根據硬件實現更大的優化,這更適合移動設備的特點。
從Android 4.4開始,默認的運行環境是ART。ART的機制與Dalvik不同。在Dalvik機制下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換為機器碼,這會拖慢應用的運行效率。而在ART環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫作預編譯(Ahead-Of-Time,AOT)。這樣,應用的啟動(首次)和執行都會變得更加 快速。
1.3.4 應用程序框架(Application Framework)
Android的應用程序框架為應用程序層的開發者提供APIs,它實際上是一個應用程序的框架。由于上層的應用程序是以Java構建的,因此本層次提供的首先包含了UI程序中所需要的各種控件,例如:Views(視圖組件),其中又包括了List(列表)、Grid(柵格)、Text Box(文本框)和Button(按鈕)等,甚至一個嵌入式的Web瀏覽器。
作為一個基本的Andoid應用程序,可以利用應用程序框架中的以下5個部分來構建。
Activity(活動)。
Broadcast Intent Receiver(廣播意圖接收者)。
Service(服務)。
Content Provider(內容提供者)。
Intent and Intent Filter(意圖和意圖過濾器)。
1.3.5 應用程序(Application)——Java實現
Android的應用程序主要是用戶界面(User Interface)方面的,通過瀏覽Android系統的開源代碼可知,應用層是通過Java語言編碼實現的,其中還包含了各種資源文件(放置在res目錄中)。Java程序和相關資源在經過編譯后,會生成一個APK包。Android本身提供了主屏幕(Home)、聯系人(Contact)、電話(Phone)和瀏覽器(Browers)等眾多的核心應用。同時應用程序的開發者還可以使用應用程序框架層的API實現自己的程序。這也是Android開源的巨大潛力的體現。
總結
以上是生活随笔為你收集整理的libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pushmail的YY
- 下一篇: 电子商务案例:联邦快递公司成功模式