Android 源碼根資料夾結構:
以下內容遵循這個命名: 檔案夾名稱:釋意
bionic:android 中所使用的是標準C庫源檔案,該項目將被編譯成靜態庫檔案,這些庫檔案僅在編譯其他C程式時使用,不會被輸出到最終裝置中
bootable:二次引導程式源碼,對應NAND Flash的二次引導分區中的內容,這部分代碼不會被包含在最終的system.img或boot.img 檔案中
build:編譯系統中樞,該目錄下的各種make指令碼和shell指令碼共同組成了android的編譯環境
cts:相容測試代碼,基於android系統的手機如果需要google的認證,則必須經過google的相容性測試,相容性測試的目的是為了保證該裝置具有標準的 SDK API介面
dalvik:android中的java虛擬機器相關的源碼,虛擬機器內部設計相關的文檔可以參考dalvik/docs目錄下的說明文檔
development:一些開發android工程所使用的相關配置或檔案,如:一些.classpath檔案
device:不同裝置相關的編譯指令檔,一個裝置一般就是指一種型號的手機,如: Htc magic、Nexus One、Nexus S 等等
external:android系統所依賴的一些外部庫檔案,如:sqlite、opencore等,這些檔案大部分都是c/c++代碼,也有少量的java庫
frameworks:Framework的核心源碼,主要由java檔案組成
hardware:Android定義的硬體抽象層(HAL) 相關的檔案
libcore:Dalvik虛擬機器所依賴的java庫,如HashMap、ArrayList等,這些庫和Dailvik共同組成dailvik的java運行環境
ndk:Native Development Kit ,即編譯NDK所需的相關檔案
packages:Android中的一些系統應用程式,比如Contacts、Phone等
prebuilt:編譯所需的程式檔案,主要包含不同平台的ARM編譯器
sdk:編譯SDK所需的相關檔案
system:Android底層的Linux所需的一些系統工具程式,這些程式主要運行於adb 、logcat等
tools:一些其他協助工具輔助,目前只有一個名稱為tradefederation的java項目
vendor:和device目錄中的程式共同定義一個裝置所包含的私人檔案,它與device目錄的區別在於,device主要定義了不同裝置所需的特有檔案,但卻是開源的,而vendor中包含的檔案一般都是目標檔案,卻不是開源的。
Android 源碼\out目錄結構:
out\target\product\generic\下有個system目錄(如果沒有generic這個目錄則是在項目名目錄下,如mtk的wtxxxxx),其包含內容簡介如下:
\system\app
這個裡面主要存放的是常規下載的應用程式,可以看到都是以APK格式結尾的檔案,在這個檔案夾下的程式為系統預設的組件,自己安裝的軟體將不會出現在這裡,而是\data\檔案夾中。
\system\app\AlarmClock.apk 鬧鐘
\system\app\Browser.apk 瀏覽器
\system\app\Bugreport.apk Bug報告
\system\app\Calculator.apk 計算機
\system\bin
這個目錄下的檔案都是系統的本地程式,從bin檔案夾名稱可以看出是binary二進位的程式,裡面主要是Linux系統內建的組件:
\system\bin\am
\system\bin\app_process 系統進程
\system\bin\dalvikvm Dalvik虛擬機器宿主
\system\bin\dbus-daemon 系統BUS匯流排監控
\system\bin\debuggerd 調試器
\system\bin\debug_tool 調試工具
\system\bin\dexopt DEX選項
\system\bin\dhcpcd DHCP伺服器
\system\etc
從檔案夾名稱來看儲存的都是系統的設定檔,比如APN存取點設定等核心配置。
\system\etc\apns-conf.xml APN存取點設定檔
\system\etc\AudioFilter.csv 音頻過濾器設定檔
\system\etc\AudioPara4.csv
\system\etc\bookmarks.xml 書籤資料庫
\system\etc\dbus.conf 匯流排監視設定檔
\system\fonts
字型檔夾,除了標準字型和粗體、斜體外可以看到檔案體積最大的可能是中文字型檔,或一些unicode字型檔,從T-Mobile G1上可以清楚的看到顯示簡體中文正常,其中DroidSansFallback.ttf檔案大小
\system\fonts\DroidSans-Bold.ttf
\system\fonts\DroidSans.ttf
\system\fonts\DroidSansFallback.ttf
\system\fonts\DroidSansMono.ttf
\system\framework
framework主要是一些核心的檔案,從尾碼名為jar可以看出是是系統平台架構。
\system\framework\am.jar
\system\framework\am.odex
\system\framework\android.awt.jar AWT庫
\system\framework\android.awt.odex
\system\lib
lib目錄中存放的主要是系統底層庫,如平台執行階段程式庫。
\system\lib\libaes.so
\system\lib\libagl.so
\system\lib\libandroid_runtime.so Android執行階段程式庫
\system\lib\libandroid_servers.so 系統服務元件
\system\lib\libaudio.so 音頻處理
\system\lib\libaudioeq.so EQ均衡器
\system\lib\libaudioflinger.so 音頻過濾器
\system\lib\libbluetooth.so 藍芽組件
\system\lib\libc.so
\system\lib\libcamera.so 超相機組件
\system\lib\libcameraservice.so
\system\lib\libcorecg.so
\system\lib\libcrypto.so 加密組件
\system\media
鈴聲音樂檔案夾,除了常規的鈴聲外還有一些系統提示事件音
\system\media\audio
\system\media\audio\alarms 鬧鈴音
\system\media\audio\notifications 提示音
\system\media\audio\ringtones 鈴聲
\system\media\audio\ui 介面操作事件音
\system\sounds
預設的音樂測試檔案,僅有一個test.mid檔案,用於播放測試的檔案。
\system\sounds\test.mid
\system\usr
使用者檔案夾,包含共用、鍵盤配置、時間地區檔案等。
\system\usr\keychars
\system\usr\keylayout
\system\usr\share
\system\usr\srec