Android Source Code Architecture
1. Android framework
2. Android directories
|-- bionic
Android使用開源Linux核心同時Google為Linux核心增強了不少東西,自己開發了Bionic庫。首先GNU的核心在體積和運作效率上不适合移動裝置,系統核心元件都是以動态庫的形式駐留在每個程序中,運作效率和記憶體占用都是十分重要的問題。Google開發了一個自定義的庫名為Bionic,以BSD許可形式開源。
|-- bootloader
Legacy, 未知
|-- build
Android 的Makefile實際上在此目錄下。
|-- buildspec.mk.default //此檔案注釋中提到此檔案為臨時檔案,
|-- cleanspec.mk //clean build
|-- core //mk (Makefile 檔案) 檔案多在此目錄下
|-- envsetup.sh //用于編譯Android 的腳本
|-- libs //不太清楚
|-- target //類似于qtopia 中QPE/device目錄,關于不同target所需要的一些定義,為目标所需要檔案
`-- tools //編譯過程中主機所需要的工具,一些需要經過編譯生成
其中,core中的Makefile是整個Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。
envsetup.sh是一個在使用仿真器運作的時候,用于設定環境的腳本。
dalvik目錄用于提供Android JAVA應用程式運作的基礎————JAVA虛拟機。
development目錄展開的一個級别的目錄如下所示:
|-- dalvik
Google自己的java虛拟機, 有源碼。
|-- development
在Android中運作, 用于開發中調試的工具。如Emulator上運作的,用于監視系統運作情況的程式。
|-- apps //Android應用程式的模闆
|-- build //編譯腳本模闆
|-- cmds
|-- data
|-- docs
|-- emulator //模拟器相關
|-- host //包含windows平台的一些工具
|-- ide
|-- pdk
|-- samples //一些示例程式
|-- simulator //大多是目标機器的一些工具
`-- tools
在emulator目錄中qemud是使用QEMU仿真時目标機器運作的背景程式,skins是仿真時手機的界面。
samples中包含了很多Android簡單工程,這些工程為開發者學習開發Android程式提供了很大便利,可以作為模闆使用。
|-- external
非系統庫,bluez, dbus, yaffs2等。有一個googleclient, 還沒有看。
在external中,每個目錄表示Android目标系統中的一個子產品,可能有一個或者若幹個庫構成。其中:
opencore為PV(PacketVideo),它是Android多媒體架構的核心。
webkit是Android網絡浏覽器的核心。
sqlite是Android資料庫系統的核心。
openssl是Secure Socket Layer,一個網絡協定層,用于為資料通訊提供安全支援。
|-- frameworks Android framework
|-- base
Base下的目錄清單
|-- Android.mk
|-- MODULE_LICENSE_APACHE2
|-- NOTICE
|-- awt
|-- camera
|-- cmds
|-- core
重點。Android SDK源碼在此。
|-- data
|-- docs
|-- graphics
|-- include
|-- libs
|-- location
|-- media
|-- opengl
|-- packages
|-- preloaded-classes
|-- sax
|-- services
|-- telephony
|-- test-runner
|-- tools
`-- wifi
|-- opt //不大清楚
`-- policies //手機運作的背景,好像管理按鍵消息,以及關機等
|-- hardware
GPS, POWER, WIFI等硬體驅動
|-- kernel
Linux kernel
|-- out //編譯出的結果放在此目錄下,包括img檔案以及編譯好的jar庫
|-- packages //Android應用程式,SDK中已經實作的應用程式,Alarm Clock, Media Player 等, 不能直接在1.0sdk上編譯,1.0的sdk中并沒有source code中庫的接口
|-- prebuilt //平台相關 windows, linux(x86)等。
|-- recovery //不大清楚
`-- system //adb源碼在此