Android的原始碼結構


Google提供的Android包含了原始Android的目標機程式碼,主機編譯工具、模擬環境,程式碼包經過解壓縮後,第一級別的目錄和文件如下所示:


.


|-- Makefile (全域的Makefile


|-- bionic Bionic含義為仿生,這裡面是一些基礎的函式庫的原始碼)


|-- bootloader (引導加載器)


|-- build build目錄中的內容不是目標所用的程式碼,而是編譯和配置所需要的腳本和工具)


|-- dalvik JAVA虛擬機)


|-- development(程序開發所需要的模組和工具)


|-- external (目標機器使用的一些函式庫)


|-- frameworks(應用程序的框架層)


|-- hardware (與硬件相關的函式庫)


|-- kernel Linux2.6的原始碼)


|-- packages Android的各種應用程序)


|-- prebuilt Android在各種平台下編譯的預置腳本)


|-- recovery (與目標的恢復功能相關)


`-- system Android的底層的一些函式庫)






bionic目錄展開一個級別的目錄如下所示:


bionic/


|-- Android.mk


|-- libc


|-- libdl


|-- libm


|-- libstdc++


|-- libthread_db


`-- linker




bootloader目錄展開的兩個級別目錄:


bootloader/


`-- legacy


|-- Android.mk


|-- README


|-- arch_armv6


|-- arch_msm7k


|-- fastboot_protocol.txt


|-- include


|-- libboot


|-- libc


|-- nandwrite


`-- usbloader




build目錄展開的一個級別的目錄如下所示:


build/


|-- buildspec.mk.default


|-- cleanspec.mk


|-- core (各種以mk為結尾的文件,它門是編譯所需要的Makefile


|-- envsetup.sh


|-- libs


|-- target (包含boardproduct兩個目錄,為目標所需要文件)


`-- tools (編譯過程中主機所需要的工具,一些需要經過編譯生成)


其中,core中的Makefile是整個Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。


envsetup.sh是一個在使用模擬器運行的時候,用於設置環境的腳本。




dalvik目錄用於提供Android JAVA應用程序運行的基礎————JAVA虛擬機。




development目錄展開的一個級別的目錄如下所示:


development


|-- apps Android應用程序的模組)


|-- build (編譯腳本模組)


|-- cmds


|-- data


|-- docs


|-- emulator (模擬相關)


|-- host (包含windows平台的一些工具)


|-- ide


|-- pdk


|-- samples (一些示例程序)


|-- simulator (大多是目標機器的一些工具)


`-- tools


emulator目錄中qemud是使用QEMU模擬時目標機器運行的後台程序,skins是模擬時手機的界面。




samples中包含了很多Android簡單工程,這些工程為開發者學習開發Android程序提供了很大便利,可以作為模組使用。




external目錄展開的一個級別的目錄如下所示:


external/


|-- aes


|-- apache-http


|-- bluez


|-- clearsilver


|-- dbus


|-- dhcpcd


|-- dropbear


|-- elfcopy


|-- elfutils


|-- emma


|-- esd


|-- expat


|-- fdlibm


|-- freetype


|-- gdata


|-- giflib


|-- googleclient


|-- icu4c


|-- iptables


|-- jdiff


|-- jhead


|-- jpeg


|-- libffi


|-- libpcap


|-- libpng


|-- libxml2


|-- netcat


|-- netperf


|-- neven


|-- opencore


|-- openssl


|-- oprofile


|-- ping


|-- ppp


|-- protobuf


|-- qemu


|-- safe-iop


|-- skia


|-- sonivox


|-- sqlite


|-- srec


|-- strace


|-- tagsoup


|-- tcpdump


|-- tinyxml


|-- tremor


|-- webkit


|-- wpa_supplicant


|-- yaffs2


`-- zlib


external中,每個目錄表示Android目標系統中的一個模塊,可能有一個或者若干個函式庫構成。其中:


opencorePVPacketVideo),它是Android多媒體框架的核心。


webkitAndroid網絡瀏覽器的核心。


sqliteAndroid數據函式庫系統的核心。


opensslSecure Socket Layer,一個網絡協議層,用於為數據通訊提供安全支持。


frameworks目錄展開的一個級別的目錄如下所示:


frameworks/


|-- base


|-- opt


`-- policies




frameworksAndroid應用程序的框架。




Hardware是一些與硬件相關的函式庫




kernelLinux2.6的原始碼




packages目錄展開的兩個級別的目錄如下所示:


packages/


|-- apps


| |-- AlarmClock


| |-- Browser


| |-- Calculator


| |-- Calendar


| |-- Camera


| |-- Contacts


| |-- Email


| |-- GoogleSearch


| |-- HTMLViewer


| |-- IM


| |-- Launcher


| |-- Mms


| |-- Music


| |-- PackageInstaller


| |-- Phone


| |-- Settings


| |-- SoundRecorder


| |-- Stk


| |-- Sync


| |-- Updater


| `-- VoiceDialer


`-- providers


|-- CalendarProvider


|-- ContactsProvider


|-- DownloadProvider


|-- DrmProvider


|-- GoogleContactsProvider


|-- GoogleSubscribedFeedsProvider


|-- ImProvider


|-- MediaProvider


`-- TelephonyProvider




packages中包含兩個目錄,其中apps中是Android中的各種應用程序,providers是一些內容提供者(在Android中的一個數據源)。


packages中兩個目錄的內容大都是使用JAVA編寫的程序,各個文件夾的層次結構是類似的。




prebuilt目錄展開的一個級別的目錄如下所示:


prebuilt/


|-- Android.mk


|-- android-arm


|-- common


|-- darwin-x86


|-- linux-x86


`-- windows




system目錄展開的兩個級別的目錄如下所示:


system/


|-- bluetooth


| |-- bluedroid


| `-- brfpatch


|-- core


| |-- Android.mk


| |-- README


| |-- adb


| |-- cpio


| |-- debuggerd


| |-- fastboot


| |-- include (各個函式庫接口的頭文件)


| |-- init


| |-- libctest


| |-- libcutils


| |-- liblog


| |-- libmincrypt


| |-- libnetutils


| |-- libpixelflinger


| |-- libzipfile


| |-- logcat


| |-- logwrapper


| |-- mkbootimg


| |-- mountd


| |-- netcfg


| |-- rootdir


| |-- sh


| `-- toolbox


|-- extras


| |-- Android.mk


| |-- latencytop


| |-- libpagemap


| |-- librank


| |-- procmem


| |-- procrank


| |-- showmap


| |-- showslab


| |-- sound


| |-- su


| |-- tests


| `-- timeinfo


`-- wlan


`—ti



立你斯 發表在 痞客邦 留言(0) 人氣()