Android代碼結(jié)構(gòu)深入剖析
當(dāng)我們?cè)趯?duì)Android操作系統(tǒng)進(jìn)行編程后,會(huì)產(chǎn)生一個(gè)結(jié)構(gòu)嚴(yán)密的Android代碼結(jié)構(gòu),那么大家可以從這篇文章中對(duì)這一結(jié)構(gòu)進(jìn)行詳細(xì)的分析,以此為參考,來加深大家對(duì)這一操作系統(tǒng)的認(rèn)識(shí),方便大家今后的開發(fā)。
Android編譯完成后,將在根目錄中生成一個(gè)out文件夾,所有生成的Android代碼結(jié)構(gòu)內(nèi)容均放置在這個(gè)文件夾中。out文件夾如下所示:
- out/
- -- CaseCheck.txt
- -- casecheck.txt
- -- host
- -- common
- -- linux-x86
- -- target
- -- common
- -- product
主要的兩個(gè)目錄為host和target,前者表示在主機(jī)(x86)生成的工具,后者表示目標(biāo)機(jī)(默認(rèn)為ARMv5)運(yùn)行的內(nèi)容。
host目錄的結(jié)構(gòu)如下所示:
- out/host/
- -- common
- -- obj (JAVA庫(kù))
- -- linux-x86
- -- bin (二進(jìn)制程序)
- -- framework (JAVA庫(kù),*.jar文件)
- -- lib (共享庫(kù)*.so)
- -- obj (中間生成的目標(biāo)文件)
host目錄是一些在主機(jī)上用的工具,有一些是二進(jìn)制程序,有一些是JAVA的程序。
target目錄的Android代碼結(jié)構(gòu)如下所示:
- out/target/
- -- common
- -- R (資源文件)
- -- docs
- -- obj (目標(biāo)文件)
- -- product
- -- generic
其中common目錄表示通用的內(nèi)容,product中則是針對(duì)產(chǎn)品的內(nèi)容。
在common目錄的obj中,包含兩個(gè)主要的目錄:
APPS 中包含了JAVA使用程序生成的目標(biāo),每個(gè)使用程序?qū)?yīng)其中一個(gè)子目錄,將結(jié)合每個(gè)使用程序的原始文件生成Android使用程序的APK包。
JAVA_LIBRARIES 中包含了JAVA的庫(kù),每個(gè)庫(kù)對(duì)應(yīng)其中一個(gè)子目錄。
在默認(rèn)的情況下,Android編譯將生成generic目錄,如果選定產(chǎn)品還可以生成其他的目錄。generic包含了以下內(nèi)容:
- out/target/product/generic/
- -- android-info.txt
- -- clean_steps.mk
- -- data
- -- obj
- -- ramdisk.img
- -- root
- -- symbols
- -- system
- -- system.img
- -- userdata-qemu.img
- -- userdata.img
在generic/obj/APPS目錄中包含了各種JAVA使用,與common/APPS相對(duì)應(yīng),但是已經(jīng)打成了APK包。 #t#
system目錄是主要的文件系統(tǒng),data目錄是存放數(shù)據(jù)的文件系統(tǒng)。
obj/SHARED_LIBRARIES中存放所有動(dòng)態(tài)庫(kù)。
obj/STATIC_LIBRARIES中存放所有靜態(tài)庫(kù)。
多個(gè)以img為結(jié)尾的文件是多個(gè)目標(biāo)映像文件,其中ramdisk是作為內(nèi)存盤的根文件系統(tǒng)映像,system.img是主要文件系統(tǒng)的映像,這是一個(gè)比較大的文件,data.img是數(shù)據(jù)內(nèi)容映像。這多個(gè)image文件是模擬器運(yùn)行時(shí)真實(shí)需要的文件。
Android代碼結(jié)構(gòu)的相關(guān)內(nèi)容就為大家介紹到這里。