最近爲了更深入的學習,由於遇到一本不錯的書,所以開始寫相關的讀書筆記。同時開始練習相關的Markdwon寫法。
1Android 系統機構
1. 應用層
2. 應用框架層(Java Framework)
提供的一些常用的API
名稱 | 功能描述 |
---|---|
Activity Manager(活動管理器) | 管理各個應用程序生命週期以及通常的導航回退功能 |
Location Manager(位置管理器) | 提供地理位置以及定位功能服務 |
Package Manager(包管理器) | 管理所有安裝在Android系統中的應用程序 |
Notification Manager(通知管理器) | 使得應用程序可以在狀態欄中顯示自定義的提示信息 |
Resource Manager(資源管理器) | 提供應用程序使用的各種非代碼資源,如本地化字符串、圖片、佈局文件、顏色文件等 |
Telephony Manager(電話管理器) | 管理所有的移動設備功能 |
Window Manager(窗口管理器) | 管理所有開啓的窗口程序 |
Content Providers(內容提供器) | 使得不同應用程序之間可以共享數據 |
View System(視圖系統) | 構建應用程序的基本組件 |
3. 系統運行庫層(Native)
1. C/C++程序庫
名稱 | 功能描述 |
---|---|
OpenGL ES | 3D繪圖函數庫 |
Libc 從BSD | 繼承來的標準C系統函數庫,專門爲基於嵌入式Linux的設備定製 |
Media Framework | 多媒體庫,支持多種常用的音頻、視頻格式錄製和回放。 |
SQLite | 輕型的關係型數據庫引擎 |
SGL | 底層的2D圖形渲染引擎 |
SSL | 安全套接層,是爲網絡通信提供安全及數據完整性的一種安全協議 |
FreeType | 可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件 |
2. Android運行時庫
運行時庫又分爲核心庫和ART(5.0系統之後,Dalvik虛擬機被ART取代)。DVM和ART相比進步的地方: 在Dalvik下,應用每次運行的時候,字節碼都需要通過即時編譯器轉換爲機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,字節碼就會預先編譯成機器碼。
3. 硬件抽象層(HAL)
通俗來講,就是將控制硬件的動作放在硬件抽象層中。
4. Linux內核層
2.Android系統源碼目錄
如果沒有下載的源碼,在線查看推薦http://androidxref.com.查詢搜索還是很快。
1.整體結構
Android源碼根目錄 | 描述 |
---|---|
abi | 應用程序二進制接口 |
art | 全新的ART運行環境 |
bionic | 系統C庫 |
bootable | 啓動引導相關代碼 |
build | 存放系統編譯規則及generic等基礎開發包配置 |
cts | Android兼容性測試套件標準 |
dalvik | dalvik虛擬機 |
developers | 開發者目錄 |
development | 應用程序開發相關 |
device | 設備相關配置 |
docs | 參考文檔目錄 |
external | 開源模組相關文件 |
frameworks | 應用程序框架,Android系統核心部分,由Java和C++編寫 |
hardware | 主要是硬件抽象層的代碼 |
libcore | 核心庫相關文件 |
libnativehelper | 動態庫,實現JNI庫的基礎 |
ndk | NDK相關代碼,幫助開發人員在應用程序中嵌入C/C++代碼 |
out | 編譯完成後代碼輸出在此目錄 |
packages | 應用程序包 |
pdk | Plug Development Kit 的縮寫,本地開發套件 |
platform_testing | 平臺測試 |
prebuilts | x86和arm架構下預編譯的一些資源 |
sdk | sdk和模擬器 |
system | 底層文件系統庫、應用和組件 |
toolchain | 工具鏈文件 |
tools | 工具文件 |
Makefile | 全局Makefile文件,用來定義編譯規則 |
2.應用層部分
packages目錄 | 描述 |
---|---|
apps | 核心應用程序 |
experimental | 第三方應用程序 |
inputmethods | 輸入法目錄 |
providers | 內容提供者目錄 |
screensavers | 屏幕保護 |
services | 通信服務 |
wallpapers | 牆紙 |
3.應用框架層部分
/frameworks/base目錄結構
/frameworks/base目錄 | 描述 |
---|---|
api | 定義API |
cmds | 重要命令:am、app_proce等 |
core | 核心庫 |
data | 字體和聲音等數據文件 |
docs | 文檔 |
graphics | 圖形圖像相關 |
include | 頭文件 |
keystore | 和數據簽名證書相關 |
libs | 庫 |
location | 地理位置相關庫 |
media | 多媒體相關庫 |
native | 本地庫 |
nfc-extras | NFC相關 |
obex | 藍牙傳輸 |
opengl | 2D/3D 圖形API |
packages | 設置、TTS、VPN程序 |
sax | XML解析器 |
services | 系統服務 |
telephony | 電話通訊管理 |
test-runner | 測試工具相關 |
tests | 測試相關 |
tools | 工具 |
wifi | WiFI無線網絡 |
4.C/C++程序庫部分
目錄位置 | 描述 |
---|---|
bionic/ | Google開發的系統C庫,以BSD許可形式開源。 |
/frameworks/av/media | 系統媒體庫 |
/frameworks/native/opengl | 第三方圖形渲染庫 |
/frameworks/native/services/surfaceflinger | 圖形顯示庫,主要負責圖形的渲染、疊加和繪製等功能 |
external/sqlite | 輕量型關係數據庫SQLite的C++實現 |
3.Android源碼閱讀
1.在線閱讀
推薦http://androidxref.com. 查詢速度相對可以
2.使用Source Insight閱讀
第一章的主要 內容就到這裏了,詳細的內容還需要實踐去操作,比如真正的挑選到感興趣的部分去閱讀源碼。