日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

libraries 和android runtime之间的关系,《Android Studio应用开发实战详解》——第1章,第1.3节Android系统架构...

發布時間:2024/1/1 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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系统架构...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。