Android2.3.7源码结构分析
對Andorid系統(tǒng)進(jìn)行分析或者系統(tǒng)功能定制的時候,我們經(jīng)常需要在眾多文件中花費(fèi)大量時間定位所需關(guān)注的部分。為了減輕這部分枯燥而不可避免的工作,本文對2.3.7版本的源碼結(jié)構(gòu)進(jìn)行了簡單分析。希望對剛加入安卓大軍的朋友們有所幫助。
下圖為2.3.7_r1版本的根目錄結(jié)構(gòu):
Makefile (makefile文件)
bionic (bionic?C庫,C運(yùn)行時支持:libc、libm、libdl、動態(tài)linker)
bootable (啟動引導(dǎo)相關(guān)代碼)
build (存放系統(tǒng)編譯規(guī)則及generic等基礎(chǔ)開發(fā)包配置)
cts (Android兼容性測試套件標(biāo)準(zhǔn))
dalvik (dalvik?JAVA虛擬機(jī))
development (應(yīng)用程序開發(fā)相關(guān))
device (廠商設(shè)備的編譯變量等)
external (android使用的一些開源的模組)
frameworks (核心框架——java及C++語言)
hardware? (主要是硬件適配層HAL代碼)
libcore (核心庫,支持dalvik)
ndk (本地代碼的開發(fā)工具,用來包含應(yīng)用程序的本地代碼)
out (編譯完成后的代碼輸出與此目錄)
packages? (應(yīng)用程序包)
prebuilt? (x86和arm架構(gòu)下預(yù)編譯的一些資源)
sdk? (sdk及模擬器)
system (文件系統(tǒng)庫、應(yīng)用及組件——C語言)
主要工程及描述:
bionic?目錄
Libc (C庫)
Libdl (dl是動態(tài)鏈接,提供訪問動態(tài)鏈接庫的功能)
Libm (m是數(shù)學(xué),提供數(shù)學(xué)計算相關(guān)功能)?
libstdc++ (標(biāo)準(zhǔn)?C++實現(xiàn)庫)
libthread_db (線程調(diào)試庫,gdb相關(guān))
linker (動態(tài)鏈接器)
bootable?目錄
Bootloader (適合各種bootloader的通用代碼,部分函數(shù)實現(xiàn)及一些匯編文件)
Diskinstaller (android鏡像打包器,x86可生產(chǎn)iso)
Recovery (系統(tǒng)恢復(fù)相關(guān))
build目錄
core (核心編譯規(guī)則)
libs (主機(jī)端庫,有android?“cp”功能替換)
target (目標(biāo)機(jī)編譯對象:模擬器等)
tools (編譯中主機(jī)使用的工具及腳本)
dalvik目錄
dalvikvm (main.c的目錄)
dexdump (dex反匯編)
dexlist (List?all?methods?in?all?concrete?classes?in?a?DEX?file.)
dexopt (預(yù)驗證與優(yōu)化)
docs (文檔)
dvz (和zygote相關(guān)的一個命令)
dx (dx工具,將多個java轉(zhuǎn)換為dex)
hit (猜測是堆棧內(nèi)實例相關(guān)操作的實線)
libdex (dex的庫)
libnativehelper (安卓本地幫助庫)
tests (測試代碼)
tools (工具)?
vm (虛擬機(jī)實現(xiàn))
development?目錄
Apps (一些核心應(yīng)用程序)
build? (編譯腳本模板)
cmds (有個monkey工具)
data (配置數(shù)據(jù))
docs (文檔)
host (主機(jī)端USB驅(qū)動等)
ide (集成開發(fā)環(huán)境)
ndk (本地開發(fā)套件——c語言開發(fā)套件)
pdk (Plug?Development?Kit)
samples (示例)
scripts (腳本)
sdk (sdk配置)
sdk_overlay (輸入法配置)
simulator? (模擬器)
testrunner? (測試用)
tools (一些工具)
tutorials (教程)
framework目錄
base (核心框架庫,多為java或c++)
ex (猜測是以前版本遺留的java類)
opt (可選部分:emoji工廠類)
hardware目錄
broadcom (博通公司開源抽象層)
libhardware (硬件抽象層庫)
libhardware_legacy(遺留的硬件抽象層庫)
msm7k (高通7k處理器開源抽象層)
qcom (qcom公司開源抽象層)
ril (無線接口層(Radio?Interface?Layer))
ti (ti公司開源抽象層)
kernel目錄
Linux內(nèi)核,空
libcore目錄
dalvik (dalvik支持)
dom (文件對象模型相關(guān))
expectations (異常相關(guān))
icu (jni的國際化組件的unicode支持)
include (一些頭文件)
json (JavaScript對象符號相關(guān))
junit (junit測試工具相關(guān))
luni (猜測是一些java基本庫的實現(xiàn))
sqlite-jdbc (sqlite的java數(shù)據(jù)庫聯(lián)接實現(xiàn))
support (一些測試)
xml (xml支持)
prebuilt目錄
各主機(jī)的預(yù)編譯頭文件
system目錄
bluetooth (藍(lán)牙相關(guān))
core (系統(tǒng)核心工具)
extras
(擴(kuò)展工具)
media (媒體相關(guān))
netd (網(wǎng)絡(luò)相關(guān))
vold (SD卡相關(guān))
wlan (無線相關(guān))
PS:.git文件夾內(nèi)為repo或git工具使用的文件,并非是安卓項目所屬。
參考資料:
http://wenku.baidu.com/view/7eb0cff69e314332396893c7.html
http://wenku.baidu.com/view/9e9e9f8b680203d8ce2f247e.html?from=rec&pos=0&weight=212&lastweight=108&count=5
總結(jié)
以上是生活随笔為你收集整理的Android2.3.7源码结构分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【开源推荐】AllJoyn:打造全球物联
- 下一篇: 基于Android Studio搭建An