国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android系統架構與系統源碼目錄

2019-11-06 09:42:08
字體:
來源:轉載
供稿:網友

轉載于:Android開發中文站 ? Android系統架構與系統源碼目錄

1.Android系統架構

Android系統架構分為五層,從上到下依次是應用層、應用框架層、系統運行庫層、硬件抽象層和linux內核層。這里寫圖片描述

應用層

系統內置的應用程序以及非系統級的應用程序都是屬于應用層。負責與用戶進行直接交互,通常都是用java進行開發的。

應用框架層(Java Framework)

應用框架層為開發人員提供了可以開發應用程序所需要的API,我們平常開發應用程序都是調用的這一層所提供的API,當然也包括系統的應用。這一層的是由Java代碼編寫的,可以稱為Java Framework。下面來看這一層所提供的主要的組件

名稱功能描述
Activity Manager(活動管理器)管理各個應用程序生命周期以及通常的導航回退功能
Location Manager(位置管理器)提供地理位置以及定位功能服務
Package Manager(包管理器)管理所有安裝在Android系統中的應用程序
Notification Manager(通知管理器)使得應用程序可以在狀態欄中顯示自定義的提示信息
Resource Manager(資源管理器)提供應用程序使用的各種非代碼資源,如本地化字符串、圖片、布局文件、顏色文件等
Telephony Manager(電話管理器)管理所有的移動設備功能
Window Manager(窗口管理器)管理所有開啟的窗口程序
Content PRoviders(內容提供器)使得不同應用程序之間可以共享數據
View System(視圖系統)構建應用程序的基本組件

 表1

系統運行庫層(Native)

系統運行庫層分為兩部分,分別是C/C++程序庫和Android運行時庫。下面分別來介紹它們。

1.C/C++程序庫

C/C++程序庫能被Android系統中的不同組件所使用,并通過應用程序框架為開發者提供服務,主要的C/C++程序庫如下表2所示。

名稱功能描述
OpenGL ES3D繪圖函數庫
Libc從BSD繼承來的標準C系統函數庫,專門為基于嵌入式Linux的設備定制
Media Framework多媒體庫,支持多種常用的音頻、視頻格式錄制和回放。
SQLite輕型的關系型數據庫引擎
SGL底層的2D圖形渲染引擎
SSL安全套接層,是為網絡通信提供安全及數據完整性的一種安全協議
FreeType可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件

 表2

2.Android運行時庫

運行時庫又分為核心庫和ART(5.0系統之后,Dalvik虛擬機被ART取代)。核心庫提供了Java語言核心庫的大多數功能,這樣開發者可以使用Java語言來編寫Android應用。相較于JVM,Dalvik虛擬機是專門為移動設備定制的,允許在有限的內存中同時運行多個虛擬機的實例,并且每一個Dalvik 應用作為一個獨立的Linux 進程執行。獨立的進程可以防止在虛擬機崩潰的時候所有程序都被關閉。而替代Dalvik虛擬機的ART 的機制與Dalvik 不同。在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換為機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼,使其成為真正的本地應用。

硬件抽象層(HAL)

硬件抽象層是位于操作系統內核與硬件電路之間的接口層,其目的在于將硬件抽象化,為了保護硬件廠商的知識產權,它隱藏了特定平臺的硬件接口細節,為操作系統提供虛擬硬件平臺,使其具有硬件無關性,可在多種平臺上進行移植。 從軟硬件測試的角度來看,軟硬件的測試工作都可分別基于硬件抽象層來完成,使得軟硬件測試工作的并行進行成為可能。通俗來講,就是將控制硬件的動作放在硬件抽象層中。

Linux內核層

Android 的核心系統服務基于Linux 內核,在此基礎上添加了部分Android專用的驅動。系統的安全性、內存管理、進程管理、網絡協議棧和驅動模型等都依賴于該內核。Android系統的五層架構就講到這,了解以上的知識對以后分析系統源碼有很大的幫助。

2.Android系統源碼目錄

我們要先了解Android系統源碼目錄,為后期源碼學習打下基礎。關于源碼的閱讀,你可以訪問http://androidxref.com/來閱讀系統源碼。當然,最好是將源碼下載下來。下載源碼可以使用清華大學開源軟件鏡像站提供的Android 鏡像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 。如果覺得麻煩也可以查找國內的網盤進行下載,推薦使用該百度網盤地址下載:http://pan.baidu.com/s/1ngsZs,它提供了多個Android版本的的源碼下載。

整體結構

各個版本的源碼目錄基本是類似,如果是編譯后的源碼目錄會多增加一個out文件夾,用來存儲編譯產生的文件。Android7.0的根目錄結構說明如下表所示。

Android源碼根目錄描述
abi應用程序二進制接口
art全新的ART運行環境
bionic系統C庫
bootable啟動引導相關代碼
build存放系統編譯規則及generic等基礎開發包配置
ctsAndroid兼容性測試套件標準
dalvikdalvik虛擬機
developers開發者目錄
development應用程序開發相關
device設備相關配置
docs參考文檔目錄
external開源模組相關文件
frameworks應用程序框架,Android系統核心部分,由Java和C++編寫
hardware主要是硬件抽象層的代碼
libcore核心庫相關文件
libnativehelper動態庫,實現JNI庫的基礎
ndkNDK相關代碼,幫助開發人員在應用程序中嵌入C/C++代碼
out編譯完成后代碼輸出在此目錄
packages應用程序包
pdkPlug Development Kit 的縮寫,本地開發套件
platform_testing平臺測試
prebuiltsx86和arm架構下預編譯的一些資源
sdksdk和模擬器
system底層文件系統庫、應用和組件
toolchain工具鏈文件
tools工具文件
Makefile全局Makefile文件,用來定義編譯規則

 表3

從表3可以看出,系統源碼分類清晰,并且內容龐大且復雜。接下來分析packages中的內容,也就是應用層部分。

應用層部分

應用層位于整個Android系統的最上層,開發者開發的應用程序以及系統內置的應用程序都是在應用層。源碼根目錄中的packages目錄對應著系統應用層。它的目錄結構如表4所示。

packages目錄描述
apps核心應用程序
experimental第三方應用程序
inputmethods輸入法目錄
providers內容提供者目錄
screensavers屏幕保護
services通信服務
wallpapers墻紙

表4
從目錄結構可以發現,packages目錄存放著系統核心應用程序、第三方的應用程序和輸入法等等,這些應用都是運行在系統應用層的,因此packages目錄對應著系統的應用層。

應用框架層部分

應用框架層是系統的核心部分,一方面向上提供接口給應用層調用,另一方面向下與C/C++程序庫以及硬件抽象層等進行銜接。 應用框架層的主要實現代碼在/frameworks/base和/frameworks/av目錄下,其中/frameworks/base目錄結構如表5所示。

/frameworks/base目錄描述/frameworks/base目錄描述
api定義APIcmds重要命令:am、app_proce等
core核心庫data字體和聲音等數據文件
docs文檔graphics圖形圖像相關
include頭文件keystore和數據簽名證書相關
libslocation地理位置相關庫
media多媒體相關庫native本地庫
nfc-extrasNFC相關obex藍牙傳輸
opengl2D/3D 圖形APIpackages設置、TTS、VPN程序
saxxml解析器services系統服務
telephony電話通訊管理test-runner測試工具相關
tests測試相關tools工具
wifiwifi無線網絡  

 表5

C/C++程序庫部分

系統運行庫層(Native)中的 C/C++程序庫的類型繁多,功能強大,C/C++程序庫并不完全在一個目錄中,這里給出幾個常用且比較重要的C/C++程序庫所在的目錄位置。

目錄位置描述
bionic/Google開發的系統C庫,以BSD許可形式開源。
/frameworks/av/media系統媒體庫
/frameworks/native/opengl第三方圖形渲染庫
/frameworks/native/services/surfaceflinger圖形顯示庫,主要負責圖形的渲染、疊加和繪制等功能
external/sqlite輕量型關系數據庫SQLite的C++實現

 表6

講完 C/C++程序庫部分,剩下的部分我們在表3已經給出:Android運行時庫的代碼放在art/目錄中。硬件抽象層的代碼在hardware/目錄中,這一部分是手機廠商改動最大的一部分,根據手機終端所采用的硬件平臺會有不同的實現。

轉載請注明:Android開發中文站 ? Android系統架構與系統源碼目錄


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇信县| 滨海县| 合山市| 庄浪县| 崇信县| 乐安县| 江口县| 霍山县| 五莲县| 灵石县| 神池县| 凌海市| 日喀则市| 穆棱市| 漳平市| 长治市| 邹平县| 甘肃省| 泾阳县| 杂多县| 陇西县| 电白县| 台安县| 新津县| 塔城市| 株洲县| 峨山| 安图县| 虞城县| 广元市| 庆云县| 罗山县| 扬州市| 宣化县| 昭苏县| 新沂市| 龙里县| 巴彦淖尔市| 通渭县| 呼图壁县| 固镇县|