部落格裡找到一篇很詳細的源碼架構解析,作為初期對照看源碼還是有很大幫助的,暫且轉來留着用了。感謝部落格原作者niyufeng。
Android源代碼結構分析
Google提供的Android包含了:Android源代碼,工具鍊,基礎C庫,仿真環境,開發環境等,完整的一套。
第一級别的目錄和檔案如下所示:
[cpp] view plain copy
- ----------------
- ├── Makefile 全局的Makefile
- ├── build 系統編譯規則和配置所需要的腳本和工具
- ----------------
- ├── prebuilt 各種平台編譯工具鍊
- ├── bionic 基礎C庫源代碼
- ----------------
- ├── frameworks * Android應用程式的核心架構層(java及C++語言)
- ├── system * 底層檔案系統/庫/應用及元件(C語言)
- ├── dalvik JAVA虛拟機
- ├── external android使用的一些額外開源庫
- ├── libcore 與媒體播放架構代碼相關
- ----------------
- ├── packages 各種應用程式執行個體
- ├── development 程式開發所需要的執行個體/模闆/工具
- ----------------
- ├── ndk
- ├── sdk
- ├── cts Android CTS相容性規範測試用例
- ----------------
- ├── vendor * 廠商定制代碼
- ├── device * 廠商定制代碼
- ├── hardware * 一些與硬體相關的庫,部分廠家開源的硬解适配層HAL代碼
- ├── kernel * Linux源代碼
- ├── bootable 引導加載器
- ├── recovery 與目标的恢複功能相關
- ----------------
android的移植按如下流程:
(1)android linux 核心的普通驅動移植,讓核心可以在目标平台上運作起來。
(2)正确挂載檔案系統,確定核心啟動參數和 android 源代碼 system/core/rootdir 目錄下的 init.rc 中的檔案系統挂載正确。
(3)調試控制台,讓核心啟動參數中的 console 參數以及 android 源代碼 system/core/init/init.c 中的console_name 設定和硬體保持一緻
(4)打開 android 相關的驅動(logger,binder 等),序列槽輸入 logcat 看 logger 驅動起來,沒有的話調試logger 驅動。
解決底層問題方法:解除Android系統的耦合l
1 将Dalvik于bionic以及硬體驅動剝離開
2 修改Dalvik以支援标準glibc和GNU/Linux
3 把Dalvik當作普通應用程式
4 Dalvik可被單獨優化和改進
build目錄
[cpp] view plain copy
- .
- |-- envsetup.sh 是一個在使用仿真器運作的時候,用于設定環境的腳本
- |-- core (核心編譯規則,以mk為結尾的文Makefile件,被頂層目錄的Makefile引用)
- |-- history (曆史記錄)
- |-- libs
- | `-- host (主機端庫,有android “cp”功能替換)
- |-- target (目标機編譯對象,包含board和product兩個目錄,為目标所需要檔案)
- | |-- board (開發平台)
- | | |-- emulator (模拟器)
- | | |-- generic (通用)
- | | |-- idea6410 (自己添加的)
- | | `-- sim (最簡單)
- | `-- product (開發平台對應的編譯規則)
- | `-- security (密鑰相關)
- `-- tools (編譯中主機使用的工具及腳本)
- |-- acp (Android "acp" Command)
- |-- apicheck (api檢查工具)
- |-- applypatch (更新檔工具)
- |-- apriori (預連結工具)
- |-- atree (tree工具)
- |-- bin2asm (bin轉換為asm工具)
- |-- check_prereq (檢查編譯時間戳工具)
- |-- dexpreopt (模拟器相關工具,具體功能不明)
- |-- droiddoc (?作用不明,java語言,網上有人說和JDK5有關)
- |-- fs_config (This program takes a list of files and directories)
- |-- fs_get_stats (擷取檔案系統狀态)
- |-- iself (判斷是否ELF格式)
- |-- isprelinked (判斷是否prelinked)
- |-- kcm (按鍵相關)
- |-- lsd (List symbol dependencies)
- |-- releasetools (生成鏡像的工具及腳本)
- |-- rgb2565 (rgb轉換為565)
- |-- signapk (apk簽名工具)
- |-- soslim (strip工具)
- `-- zipalign (zip archive alignment tool)
prebuilt 目錄
x86和ARM架構下工具鍊/預編譯的一些資源
[cpp] view plain copy
- .
- |-- android-arm (arm-android相關)
- | |-- gdbserver (gdb調試器)
- | `-- kernel (模拟的arm核心)
- |-- android-x86 (x86-android相關)
- | `-- kernel (空的)
- |-- common (通用編譯好的代碼,應該是java的)
- |-- darwin-x86 (drawin x86平台)
- | `-- toolchain (工具鍊)
- | |-- arm-eabi-4.2.1
- | |-- arm-eabi-4.3.1
- | `-- arm-eabi-4.4.0
- |-- darwin-x86_64 (drawin x86 64bit平台)
- |-- linux-x86 (linux x86平台)
- | `-- toolchain (工具鍊,我們應該主要用這個)
- | |-- arm-eabi-4.2.1
- | |-- arm-eabi-4.3.1
- | |-- arm-eabi-4.4.0
- | `-- i686-unknown-linux-gnu-4.2.1 (x86版編譯器)
- |-- linux-x86_64 (linux x86 64bit平台)
- |-- windows (windows平台)
- `-- windows-x86_64 (64bit windows平台)
bionic 目錄
基礎C庫源代碼 [cpp] view plain copy
- .
- |-- Android.mk
- |-- libc (C庫)
- |-- libdl (libdl實作,dl是動态連結,提供通路動态連結庫的功能)
- |-- libm (libm數學庫的實作)
- |-- libstdc++ (C++實作庫libstdc++)
- |-- libthread_db (多線程程式的調試器庫)
- `-- linker (動态連結器)
frameworks 目錄
核心架構--java及C++語言 [cpp] view plain copy
- .
- |-- base (基本内容)
- | |-- api (?都是xml檔案,定義了java的api?)
- | |-- awt (AWT庫)
- | |-- build (空的)
- | |-- camera (攝像頭服務程式庫)
- | |-- cmds (重要指令:am、app_proce等)
- | |-- core (核心庫)
- | |-- data (字型和聲音等資料檔案)
- | |-- docs (文檔)
- | |-- graphics (圖形相關)
- | |-- include (頭檔案)
- | |-- keystore (和資料簽名證書相關)
- | |-- libs (庫)
- | |-- location (地區庫)
- | |-- media (媒體相關庫)
- | |-- obex (藍牙傳輸庫)
- | |-- opengl (2D-3D加速庫)
- | |-- packages (設定、TTS、VPN程式)
- | |-- sax (XML解析器)
- | |-- services (各種服務程式)
- | |-- telephony (電話通訊管理)
- | |-- test-runner (測試工具相關)
- | |-- tests (各種測試)
- | |-- tools (一些叫不上名的工具)
- | |-- vpn (VPN)
- | `-- wifi (無線網絡)
- |-- opt (可選部分)
- | |-- com.google.android (有個framework.jar)
- | |-- com.google.android.googlelogin (有個client.jar)
- | `-- emoji (standard message elements)
- `-- policies (Product policies are operating system directions aimed at specific uses)
- `-- base
- |-- mid (MID裝置)
- `-- phone (手機類裝置,一般用這個)
system 目錄
底層檔案系統/庫/應用及元件--C語言 [cpp] view plain copy
- .
- |-- Bluetooth (藍牙相關)
- |-- core (系統核心工具盒接口)
- | |-- adb (adb調試工具)
- | |-- cpio (cpio工具,建立img)
- | |-- debuggerd (調試工具)
- | |-- fastboot (快速啟動相關)
- | |-- include (系統接口頭檔案)
- | |-- init (init程式源代碼)
- | |-- libacc (輕量級C編譯器)
- | |-- libctest (libc測試相關)
- | |-- libcutils (libc工具)
- | |-- liblog (log庫)
- | |-- libmincrypt (加密庫)
- | |-- libnetutils (網絡工具庫)
- | |-- libpixelflinger (圖形處理庫)
- | |-- libsysutils (系統工具庫)
- | |-- libzipfile (zip庫)
- | |-- logcat (檢視log工具)
- | |-- logwrapper (log封裝工具)
- | |-- mkbootimg (制作啟動boot.img的工具盒腳本)
- | |-- netcfg (網絡配置netcfg源碼)
- | |-- nexus (google最新手機的代碼)
- | |-- rootdir (rootfs,包含一些etc下的腳本和配置)
- | |-- sh (shell代碼)
- | |-- toolbox (toolbox,類似busybox的工具集)
- | `-- vold (SD卡管理器)
- |-- extras (額外工具)
- | |-- latencytop (a tool for software developers ,identifying system latency happen)
- | |-- libpagemap (pagemap庫)
- | |-- librank (Java Library Ranking System庫)
- | |-- procmem (pagemap相關)
- | |-- procrank (Java Library Ranking System相關)
- | |-- showmap (showmap工具)
- | |-- showslab (showslab工具)
- | |-- sound (聲音相關)
- | |-- su (su指令源碼)
- | |-- tests (一些測試工具)
- | `-- timeinfo (時區相關)
- `-- wlan (無線相關)
- `-- ti (ti網卡相關工具及庫)
dalvik 目錄
提供Android JAVA應用程式運作的基礎--JAVA虛拟機
[cpp] view plain copy
- .
- |-- dalvikvm (main.c的目錄)
- |-- dexdump (dex反彙編)
- |-- dexlist (List all methods in all concrete classes in a DEX file.)
- |-- dexopt (預驗證與優化)
- |-- docs (文檔)
- |-- dvz (和zygote相關的一個指令)
- |-- dx (dx工具,将多個java轉換為dex)
- |-- hit (?java語言寫成)
- |-- libcore (核心庫)
- |-- libcore-disabled (?禁用的庫)
- |-- libdex (dex的庫)
- |-- libnativehelper (Support functions for Android's class libraries)
- |-- tests (測試代碼)
- |-- tools (工具)
- `-- vm (虛拟機實作)
external 目錄
android使用的一些額外開源庫
[cpp] view plain copy
- .
- |-- aes (AES加密)
- |-- apache-http (網頁伺服器)
- |-- astl (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.)
- |-- bison (自動生成文法分析器,将無關文法轉換成C、C++)
- |-- blktrace (blktrace is a block layer IO tracing mechanism)
- |-- bluetooth (藍牙相關、協定棧)
- |-- bsdiff (diff工具)
- |-- bzip2 (壓縮工具)
- |-- clearsilver (html模闆系統)
- |-- dbus (低延時、低開銷、高可用性的IPC機制)
- |-- dhcpcd (DHCP服務)
- |-- dosfstools (DOS檔案系統工具)
- |-- dropbear (SSH2的server)
- |-- e2fsprogs (EXT2檔案系統工具)
- |-- elfcopy (複制ELF的工具)
- |-- elfutils (ELF工具)
- |-- embunit (Embedded Unit Project)
- |-- emma (java代碼覆寫率統計工具)
- |-- esd (Enlightened Sound Daemon,将多種音頻流混合在一個裝置上播放)
- |-- expat (Expat is a stream-oriented XML parser.)
- |-- fdlibm (FDLIBM (Freely Distributable LIBM))
- |-- freetype (字型)
- |-- fsck_msdos (dos檔案系統檢查工具)
- |-- gdata (google的無線資料相關)
- |-- genext2fs (genext2fs generates an ext2 filesystem as a normal (non-root) user)
- |-- giflib (gif庫)
- |-- googleclient (google使用者庫)
- |-- grub (This is GNU GRUB, the GRand Unified Bootloader.)
- |-- gtest (Google C++ Testing Framework)
- |-- icu4c (ICU(International Component for Unicode)在C/C++下的版本)
- |-- ipsec-tools (This package provides a way to use the native IPsec functionality )
- |-- iptables (防火牆)
- |-- jdiff (generate a report describing the difference between two public Java APIs.)
- |-- jhead (jpeg頭部資訊工具)
- |-- jpeg (jpeg庫)
- |-- junit (JUnit是一個Java語言的單元測試架構)
- |-- kernel-headers (核心的一些頭檔案)
- |-- libffi (libffi is a foreign function interface library.)
- |-- libpcap (網絡資料包捕獲函數)
- |-- libpng (png庫)
- |-- libxml2 (xml解析庫)
- |-- mtpd (一個指令)
- |-- netcat (simple Unix utility which reads and writes dataacross network connections)
- |-- netperf (網絡性能測量工具)
- |-- neven (看代碼和JNI相關)
- |-- opencore (多媒體架構)
- |-- openssl (SSL加密相關)
- |-- openvpn (VPN開源庫)
- |-- oprofile (OProfile是Linux核心支援的一種性能分析機制。)
- |-- ping (ping指令)
- |-- ppp (pppd撥号指令,好像還沒有chat)
- |-- proguard (Java class file shrinker, optimizer, obfuscator, and preverifier)
- |-- protobuf (a flexible, efficient, automated mechanism for serializing structured data)
- |-- qemu (arm模拟器)
- |-- safe-iop (functions for performing safe integer operations )
- |-- skia (skia圖形引擎)
- |-- sonivox (sole MIDI solution for Google Android Mobile Phone Platform)
- |-- speex (Speex編/解碼API的使用(libspeex))
- |-- sqlite (資料庫)
- |-- srec (Nuance 公司提供的開源連續非特定人語音識别)
- |-- strace (trace工具)
- |-- svox (Embedded Text-to-Speech)
- |-- tagsoup (TagSoup是一個Java開發符合SAX的HTML解析器)
- |-- tcpdump (抓TCP包的軟體)
- |-- tesseract (Tesseract Open Source OCR Engine.)
- |-- tinyxml (TinyXml is a simple, small, C++ XML parser)
- |-- tremor (I stream and file decoder provides an embeddable,integer-only library)
- |-- webkit (浏覽器核心)
- |-- wpa_supplicant (無線網卡管理)
- |-- xmlwriter (XML 編輯工具)
- |-- yaffs2 (yaffs檔案系統)
- `-- zlib (a general purpose data compression library)
在external中,每個目錄表示Android目标系統中的一個子產品,可能有一個或者若幹個庫構成。其中:
opencore為PV(PacketVideo),它是Android多媒體架構的核心。
webkit是Android網絡浏覽器的核心。
sqlite是Android資料庫系統的核心。
openssl是Secure Socket Layer,一個網絡協定層,用于為資料通訊提供安全支援。
packages 目錄
各種應用程式執行個體
[cpp] view plain copy
- .
- |-- apps (應用程式庫)
- | |-- AlarmClock (鬧鐘)
- | |-- Bluetooth (藍牙)
- | |-- Browser (浏覽器)
- | |-- Calculator (電腦)
- | |-- Calendar (月曆)
- | |-- Camera (相機)
- | |-- CertInstaller (在Android中安裝數字簽名,被調用)
- | |-- Contacts (撥号(調用)、聯系人、通話記錄)
- | |-- DeskClock (桌面時鐘)
- | |-- Email (Email)
- | |-- Gallery (相冊,和Camera類似,多了清單)
- | |-- Gallery3D (?3D相冊)
- | |-- GlobalSearch (為google搜尋服務,提供底層應用)
- | |-- GoogleSearch (google搜尋)
- | |-- HTMLViewer (浏覽器附屬界面,被浏覽器應用調用,同時提供存儲記錄功能)
- | |-- IM (即時通訊,為手機提供信号發送、接收、通信的服務)
- | |-- Launcher (登陸啟動項,顯示圖檔架構等等圖形界面)
- | |-- Launcher2 (登陸啟動項,負責應用的調用)
- | |-- Mms (?彩信業務)
- | |-- Music (音樂播放器)
- | |-- PackageInstaller (安裝、解除安裝程式的響應)
- | |-- Phone (電話撥号程式)
- | |-- Provision (預設應用的狀态,使能應用)
- | |-- Settings (開機設定,包括電量、藍牙、裝置資訊、界面、wifi等)
- | |-- SoundRecorder (錄音機,可計算存儲所需空間和時間)
- | |-- Stk (接收和發送短信)
- | |-- Sync (空) -------○1
- | |-- Updater (空)
- | `-- VoiceDialer (語音識别通話)
- |-- inputmethods (輸入法)
- | |-- LatinIME (拉丁文輸入法)
- | |-- OpenWnn (OpenWnn輸入法)
- | `-- PinyinIME (拼音輸入法)
- |-- providers (提供器,提供應用程式、界面所需的資料)
- | |-- ApplicationsProvider (應用程式提供器,提供應用程式啟動項、更新等)
- | |-- CalendarProvider (月曆提供器)
- | |-- ContactsProvider (聯系人提供器)
- | |-- DownloadProvider (下載下傳管理提供器)
- | |-- DrmProvider (建立和更新資料庫時調用)
- | |-- GoogleContactsProvider (聯系人提供器的子類,用以同步聯系人)
- | |-- GoogleSubscribedFeedsProvider(設定資訊提供器)
- | |-- ImProvider (空)
- | |-- ManagementProvider (空)
- | |-- MediaProvider (媒體提供器,提供存儲資料)
- | |-- TelephonyProvider (彩信提供器)
- | |-- UserDictionaryProvider (使用者字典提供器,提供使用者常用字字典)
- | `-- WebSearchProvider (空)
- |-- services
- | |-- EasService (空)
- | `-- LockAndWipe (空)
- `-- wallpapers (牆紙)
- |-- Basic (基本牆紙,系統内置牆紙)
- |-- LivePicker (選擇動态桌面)
- |-- MagicSmoke (桌面特殊效果)
- `-- MusicVisualization (音樂可視化,圖形随音樂而變化)
packages中包含兩個目錄,其中apps中是Android中的各種應用程式,providers是一些内容提供者(是内部自帶的資料庫源程式)。
packages中兩個目錄的内容大都是使用JAVA編寫的程式,各個檔案夾的層次結構是類似的。
作為基于SDK的開發者一般看的都是packages/apps目錄下的程式執行個體,其中setting是我的最愛。
development 目錄
開發者需要的一些例程及工具
[cpp] view plain copy
- .
- |-- apps (一些核心應用程式)
- | |-- BluetoothDebug (藍牙調試程式)
- | |-- CustomLocale (自定義區域設定)
- | |-- Development (開發)
- | |-- Fallback (和語言相關的一個程式)
- | |-- FontLab (字庫)
- | |-- GestureBuilder (手勢動作)
- | |-- NinePatchLab (?)
- | |-- OBJViewer (OBJ檢視器)
- | |-- SdkSetup (SDK安裝器)
- | |-- SpareParts (進階設定)
- | |-- Term (遠端登入)
- | `-- launchperf (?)
- |-- build (編譯腳本模闆)
- |-- cmds (有個monkey工具)
- |-- data (配置資料)
- |-- docs (文檔)
- |-- emulator (仿真相關)
- |-- host (主機端USB驅動等)
- |-- ide (內建開發環境)
- |-- ndk (本地開發套件——c語言開發套件)
- |-- pdk (Plug Development Kit)
- |-- samples (一些示例程式)
- | |-- AliasActivity (?)
- | |-- ApiDemos (API示範程式)
- | |-- BluetoothChat (藍牙聊天)
- | |-- BrowserPlugin (浏覽器插件)
- | |-- BusinessCard (商業卡)
- | |-- Compass (指南針)
- | |-- ContactManager (聯系人管理器)
- | |-- CubeLiveWallpaper (動态桌面的一個簡單例程)
- | |-- FixedGridLayout (像是布局)
- | |-- GlobalTime (全球時間)
- | |-- HelloActivity (Hello)
- | |-- Home (Home)
- | |-- JetBoy (jetBoy遊戲)
- | |-- LunarLander (貌似又是一個遊戲)
- | |-- MailSync (郵件同步)
- | |-- MultiResolution (多分辨率)
- | |-- MySampleRss (RSS)
- | |-- NotePad (記事本)
- | |-- RSSReader (RSS閱讀器)
- | |-- SearchableDictionary (目錄搜尋)
- | |-- SimpleJNI (JNI例程)
- | |-- SkeletonApp (空殼APP)
- | |-- Snake (snake程式)
- | |-- SoftKeyboard (軟鍵盤)
- | |-- Wiktionary (?維基)
- | `-- WiktionarySimple (?維基例程)
- |-- scripts (腳本)
- |-- sdk (sdk配置)
- |-- simulator (?模拟器,大多是目标機器的一些工具)
- |-- testrunner (?測試用)
- `-- tools (一些工具)
在emulator目錄中qemud是使用QEMU仿真時目标機器運作的背景程式,skins是仿真時手機的界面。
samples中包含了很多Android簡單工程,這些工程為開發者學習開發Android程式提供了很大便利,可以作為模闆使用。
vendor 目錄
廠家定制内容
[cpp] view plain copy
- .
- |-- aosp (android open source project)
- | `-- products (一些闆級規則)
- |-- htc (HTC公司)
- | |-- common-open (通用部分)
- | | `-- akmd (解壓img用的工具)
- | |-- dream-open (G1開放部分)
- | |-- prebuilt-open (預編譯開放部分)
- | `-- sapphire-open (sapphire這款型号開放内容)
- |-- pv-open (沒東西)
- |-- qcom (裡面基本是空的)
- `-- sample (google提供的樣例)
- |-- apps (應用)
- | |-- client (使用者)
- | `-- upgrade (更新)
- |-- frameworks (架構)
- | `-- PlatformLibrary (平台庫)
- |-- products (産品)
- |-- sdk_addon (sdk添加部分)
- `-- skins (皮膚)
- `-- WVGAMedDpi (WVGA适用的圖檔)
hardware 目錄
一些與硬體相關的庫,部分廠家開源的硬解适配層HAL代碼
[cpp] view plain copy
- .
- |-- broadcom (博通公司)
- | `-- wlan (無線網卡)
- |-- libhardware (硬體庫)
- | |-- include (頭檔案)
- | `-- modules (Default (and possibly architecture dependents) HAL modules)
- | |-- gralloc (gralloc顯示相關)
- | `-- overlay (Skeleton for the "overlay" HAL module.)
- |-- libhardware_legacy (舊的硬體庫)
- | |-- flashlight (背光)
- | |-- gps (GPS)
- | |-- include (頭檔案)
- | |-- mount (舊的挂載器)
- | |-- power (電源)
- | |-- qemu (模拟器)
- | |-- qemu_tracing (模拟器跟蹤)
- | |-- tests (測試)
- | |-- uevent (uevent)
- | |-- vibrator (震動)
- | `-- wifi (無線)
- |-- msm7k (高通7k處理器開源抽象層)
- | |-- boot (啟動)
- | |-- libaudio (聲音庫)
- | |-- libaudio-qsd8k (qsd8k的聲音相關庫)
- | |-- libcamera (攝像頭庫)
- | |-- libcopybit (copybit庫)
- | |-- libgralloc (gralloc庫)
- | |-- libgralloc-qsd8k (qsd8k的gralloc庫)
- | |-- liblights (背光庫)
- | `-- librpc (RPC庫)
- |-- ril (無線電抽象層)
- | |-- include (頭檔案)
- | |-- libril (庫)
- | |-- reference-cdma-sms (cdma短信參考)
- | |-- reference-ril (ril參考)
- | `-- rild (ril背景服務程式)
- `-- ti (ti公司開源HAL)
- |-- omap3 (omap3處理器)
- | |-- dspbridge (DSP橋)
- | |-- libopencorehw (opencore硬體庫)
- | |-- liboverlay (overlay硬體庫)
- | |-- libstagefrighthw (stagefright硬體庫)
- | `-- omx (omx元件)
- `-- wlan (無線網卡)
bootable 目錄
引導加載器
[cpp] view plain copy
- .
- |-- bootloader (适合各種bootloader的通用代碼)
- | `-- legacy (估計不能直接使用,可以參考)
- | |-- arch_armv6 (V6架構,幾個簡單的彙編檔案)
- | |-- arch_msm7k (高通7k處理器架構的幾個基本驅動)
- | |-- include (通用頭檔案和高通7k架構頭檔案)
- | |-- libboot (啟動庫,都寫得很簡單)
- | |-- libc (一些常用的c函數)
- | |-- nandwrite (nandwirte函數實作)
- | `-- usbloader (usbloader實作)
- |-- diskinstaller (android鏡像打包器,x86可生産iso)
- `-- recovery (系統恢複相關)
- |-- edify (更新腳本使用的edify腳本語言)
- |-- etc (init.rc恢複腳本)
- |-- minui (一個簡單的UI)
- |-- minzip (一個簡單的壓縮工具)
- |-- mtdutils (mtd工具)
- |-- res (資源)
- | `-- images (一些圖檔)
- |-- tools (工具)
- | `-- ota (OTA Over The Air Updates更新工具)
- `-- updater (更新器)
out 目錄
Android編譯完成後,将在根目錄中生成一個out檔案夾,所有生成的内容均放置在這個檔案夾中
[cpp] view plain copy
- .
- |-- CaseCheck.txt
- |-- casecheck.txt
- |-- host (在主機PC host上使用的工具,包括二進制程式以及JAVA的程式)
- | |-- common
- | | `-- obj (JAVA 庫)
- | `-- linux-x86
- | |-- bin (二進制程式)
- | |-- framework (JAVA 庫,*.jar 檔案)
- | |-- lib (共享庫*.so)
- | `-- obj (中間生成的目标檔案)
- `-- target (在目标機(如ARMv5)上運作的内容)
- |-- common (common表示通用的内容)
- | |-- R (資源檔案)
- | |-- docs
- | `-- obj (目标檔案,1 APPS中包含了打成APK包的JAVA應用程式,2 JAVA_LIBRARIES中包含了JAVA的庫)
- `-- product (product 中則是針對産品的内容)
- `-- generic
- |-- android-info.txt
- |-- clean_steps.mk
- |-- symbols
- |-- obj (obj/APPS目錄中包含了各種打成了APK包的JAVA應用,obj/SHARED_LIBRARIES中存放所有動态庫,obj/STATIC_LIBRARIES中存放所有靜态庫)
- |-- root/
- |-- ramdisk.img (對應于root/目錄,挂載在/,)
- |-- system/
- |-- system.img (挂載在system/目錄,包括了主要系統apps)
- |-- data/
- |-- userdata.img (挂載在data/目錄,使用者資料)
- `-- userdata-qemu.img
SDK和NDK目錄沒有列出。
作為基于SDK的開發者一般看的都是packages/apps目錄下的程式執行個體,其中setting是我的最愛。
而packages/providers是内部自帶的資料庫源程式。
development/是一些開發的例子,我現在正在看ndk的開發。