FrameWork(2)結構和程式碼學習
整體結構:
Android7.0的根目錄結構說明如下表所示:
|– Makefile (全域性Makefile檔案,用來定義編譯規則) |– abi (應用程式二進位制介面) |– art (ART執行環境) |– bionic (bionic C庫) |– bootable (啟動引導相關程式碼) |– build (存放系統編譯規則及generic等基礎開發包配置) |– cts (Android相容性測試套件標準) |– dalvik (dalvik JAVA虛擬機器) |– developers (開發者目錄) |– development (應用程式開發相關) |– device (裝置相關配置) |– docs (參考文件目錄) |– external (android使用的一些開源的模組) |– frameworks (核心框架——java及C++語言) |– hardware (部分廠家開源的硬解適配層HAL程式碼) |– kernel |– libcore (核心庫相關檔案) |– libnativehelper (動態庫,實現JNI庫的基礎) |– ndk (NDK相關程式碼,幫助開發人員在應用程式中嵌入C/C++程式碼) |– out (編譯完成後的程式碼輸出與此目錄) |– packages (應用程式包) |– pdk (Plug Development Kit 的縮寫,本地開發套件) |– prebuilts (x86和arm架構下預編譯的一些資源) |– sdk (sdk及模擬器) |– system (底層檔案系統庫、應用及元件——C語言) |– tools (工具檔案) |– toolchain(工具鏈檔案) |– vendor (廠商定製程式碼)
應用層部分:
應用層位於整個Android系統的最上層,開發者開發的應用程式以及系統內建的應用程式都位於應用層。原始碼根目錄中的packages目錄對應著系統應用層。
|– apps (核心應用程式) |– experimental (第三方應用程式) |– inputmethods (輸入法目錄) |– providers (內容提供者目錄) |– screensavers (螢幕保護) |– services (通訊服務) |– wallpapers (牆紙)
從目錄結構可以發現,packages目錄存放著系統核心應用程式、第三方的應用程式和輸入法等等,這些應用都是執行在系統應用層的,因此packages目錄對應著系統的應用層。
應用框架層部分:
應用框架層是系統的核心部分,一方面向上提供介面給應用層呼叫,另一方面向下與C/C++程式庫以及硬體抽象層等進行銜接。 應用框架層的主要實現程式碼在/frameworks/base和/frameworks/av目錄下,其中/frameworks/base目錄結構如下:
|– api (定義API) |– core (核心庫) |– docs (文件) |– include (標頭檔案) |– libs (庫) |– media (多媒體相關庫) |– nfc-extras (NFC相關) |– opengl 2D/3D (圖形API) |– sax (XML解析器) |– telephony (電話通訊管理) |– tests (測試相關) |– test-runner (測試工具相關) |– tools (工具) |– wifi (wifi無線網路) |– cmds (重要命令:am、app_proce等) |– data (字型和聲音等資料檔案) |– graphics (圖形影象相關) |– keystore (和資料簽名證書相關) |– location (地理位置相關庫) |– native (本地庫) |– obex (藍芽傳輸) |– packages (設定、TTS、VPN程式) |– services (系統服務)