之前介紹了《Android源碼的下載下傳,編譯,刷機》,這篇介紹一下Android源碼的目錄結構,因為目錄結構非常複雜,是以這裡隻介紹一級目錄,進入一級目錄檢視目錄結構
#檢視一級目錄和檔案
tree -L 1
導入Android Studio後是這樣子的
也可以線上檢視Android源碼結構:https://cs.android.com/android/platform/superproject/
雖然目錄很多很複雜,但framework開發需要接觸到的目錄還是比較有限的,有些目錄我也不知道幹啥用的,這裡我簡單介紹一下各個目錄的作用,經常打交道的目錄我會标注出來并詳細介紹:
- art:Android RunTime的核心檔案
- bonic:翻譯過來是仿生的意思,可能是存放的仿生功能相關的c/c++庫檔案
- bootable:存放啟動引導檔案
- build:存放系統編譯規則和基礎開發包配置
- cts:Compatibility Test Suite,GMS認證所用到的測試套件,GMS全稱為Google Mobile Service,也就是裝置安裝了GMS才可以使用Google提供的服務,比如安裝Google Play,Youtube之類的,隻有通過了cts測試套件所有測試項才能安裝GMS
- dalvik:用于 Android 平台的 Java 虛拟機,5.0之前叫DVM,之後叫ART
- developers:開發者參考文檔
- development:app開發參考項目
- device:Android支援的各種裝置及其配置
- external:Android引入的第三方庫,Google會把一些比較優秀的開源庫納入到源碼裡面,比如app開發常用的okhttp,zxing,sqlite等
- frameworks:這個是framework開發經常打交道的目錄,裡面存放着app開發的基礎架構,比如所有的View,所有的SystemService都是在這個目錄下
- hardware:這裡主要存放硬體相關的檔案,hal層的檔案都在這兒
- kernel:顧名思義,Android系統的核心
- libcore:Android中的Java核心類庫
- libnativehelper:Android中Java類庫native實作助手
- out:編譯生成的檔案都在這個目錄下,比如jar包,so庫,img鏡像等
- packages:這個也是framework開發經常打交道的目錄,所有Google原生的系統應用群組件都在這個目錄下,比如Launcher(桌面),Settings(設定),Input(輸入法),ScreenSaver(屏保)等
- pdk:platform develop kit,平台開發元件
- platform_testing:平台測試程式
- prebuilts:預編譯相關
- sdk:Java層SDK
- system:系統檔案
- test:單測試程式
- toolchain:工具鍊
- tools:工具集
- vendor:廠商相關檔案,不同廠商對應的硬體不同,Google為各個廠商預留了一個目錄,各個廠商将自己的一些特有檔案存放在此目錄下,比如廠商自己寫的一些app應用,驅動檔案,協定标準檔案等等,常見的廠商有qualcomm(高通,簡稱qcom),sumsung(三星)
具體每個目錄及其二級目錄的作用可以參考這篇部落格,我覺得介紹得很細緻-《Android 12 源碼目錄結構》