Android 2.1 源码结构分析 002 lee 003 Android 2.1 004 |-- Makefile 005 |-- bionic (bionic C库) 006 |-- bootable (启动引导相关代码) 007 |-- build (存放系统编译规则及generic等基础开发包配置) 008 |-- cts (Android兼容性测试套件标准) 009 |-- dalvik (dalvik JAVA虚拟机) 010 |-- development (应用程序开发相关) 011 |-- external (android使用的一些开源的模组) 012 |-- frameworks (核心框架——java及C++语言) 013 |-- hardware (主要保护硬解适配层HAL代码) 014 |-- out (编译完成后的代码输出与此目录) 015 |-- packages (应用程序包) 016 |-- prebuilt (x86和arm架构下预编译的一些资源) 017 |-- sdk (sdk及模拟器) 018 |-- system (文件系统库、应用及组件——C语言) 019 `-- vendor (厂商定制代码) 020 021 bionic 目录 022 |-- libc (C库) 023 | |-- arch-arm (ARM架构,包含系统调用汇编实现) 024 | |-- arch-x86 (x86架构,包含系统调用汇编实现) 025 | |-- bionic (由C实现的功能,架构无关) 026 | |-- docs (文档) 027 | |-- include (头文件) 028 | |-- inet (?inet相关,具体作用不明) 029 | |-- kernel (Linux内核中的一些头文件) 030 | |-- netbsd (?nesbsd系统相关,具体作用不明) 031 | |-- private (?一些私有的头文件) 032 | |-- stdio (stdio实现) 033 | |-- stdlib (stdlib实现) 034 | |-- string (string函数实现) 035 | |-- tools (几个工具) 036 | |-- tzcode (时区相关代码) 037 | |-- unistd (unistd实现) 038 | `-- zoneinfo (时区信息) 039 |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能) 040 |-- libm (libm数学库的实现,) 041 | |-- alpha (apaha架构) 042 | |-- amd64 (amd64架构) 043 | |-- arm (arm架构) 044 | |-- bsdsrc (?bsd的源码) 045 | |-- i386 (i386架构) 046 | |-- i387 (i387架构?) 047 | |-- ia64 (ia64架构) 048 | |-- include (头文件) 049 | |-- man (数学函数,后缀名为.3,一些为freeBSD的库文件) 050 | |-- powerpc (powerpc架构) 051 | |-- sparc64 (sparc64架构) 052 | `-- src (源代码) 053 |-- libstdc++ (libstdc++ C++实现库) 054 | |-- include (头文件) 055 | `-- src (源码) 056 |-- libthread_db (多线程程序的调试器库) 057 | `-- include (头文件) 058 `-- linker (动态链接器) 059 `-- arch (支持arm和x86两种架构) 060 bootable 目录 061 . 062 |-- bootloader (适合各种bootloader的通用代码) 063 | `-- legacy (估计不能直接使用,可以参考) 064 | |-- arch_armv6 (V6架构,几个简单的汇编文件) 065 | |-- arch_msm7k (高通7k处理器架构的几个基本驱动) 066 | |-- include (通用头文件和高通7k架构头文件) 067 | |-- libboot (启动库,都写得很简单) 068 | |-- libc (一些常用的c函数) 069 | |-- nandwrite (nandwirte函数实现) 070 | `-- usbloader (usbloader实现) 071 |-- diskinstaller (android镜像打包器,x86可生产iso) 072 `-- recovery (系统恢复相关) 073 |-- edify (升级脚本使用的edify脚本语言) 074 |-- etc (init.rc恢复脚本) 075 |-- minui (一个简单的UI) 076 |-- minzip (一个简单的压缩工具) 077 |-- mtdutils (mtd工具) 078 |-- res (资源) 079 | `-- images (一些图片) 080 |-- tools (工具) 081 | `-- ota (OTA Over The Air Updates升级工具) 082 `-- updater (升级器) 083 build目录 084 . 085 |-- core (核心编译规则) 086 |-- history (历史记录) 087 |-- libs 088 | `-- host (主机端库,有android “cp”功能替换) 089 |-- target (目标机编译对象) 090 | |-- board (开发平台) 091 | | |-- emulator (模拟器) 092 | | |-- generic (通用) 093 | | |-- idea6410 (自己添加的) 094 | | `-- sim (最简单) 095 | `-- product (开发平台对应的编译规则) 096 | `-- security (密钥相关) 097 `-- tools (编译中主机使用的工具及脚本) 098 |-- acp (Android "acp" Command) 099 |-- apicheck (api检查工具) 100 |-- applypatch (补丁工具) 101 |-- apriori (预链接工具) 102 |-- atree (tree工具) 103 |-- bin2asm (bin转换为asm工具) 104 |-- check_prereq (检查编译时间戳工具) 105 |-- dexpreopt (模拟器相关工具,具体功能不明) 106 |-- droiddoc (?作用不明,java语言,网上有人说和JDK5有关) 107 |-- fs_config (This program takes a list of files and directories) 108 |-- fs_get_stats (获取文件系统状态) 109 |-- iself (判断是否ELF格式) 110 |-- isprelinked (判断是否prelinked) 111 |-- kcm (按键相关) 112 |-- lsd (List symbol dependencies) 113 |-- releasetools (生成镜像的工具及脚本) 114 |-- rgb2565 (rgb转换为565) 115 |-- signapk (apk签名工具) 116 |-- soslim (strip工具) 117 `-- zipalign (zip archive alignment tool) 118 119 dalvik目录 dalvik虚拟机 120 . 121 |-- dalvikvm (main.c的目录) 122 |-- dexdump (dex反汇编) 123 |-- dexlist (List all methods in all concrete classes in a DEX file.) 124 |-- dexopt (预验证与优化) 125 |-- docs (文档) 126 |-- dvz (和zygote相关的一个命令) 127 |-- dx (dx工具,将多个java转换为dex) 128 |-- hit (?java语言写成) 129 |-- libcore (核心库) 130 |-- libcore-disabled (?禁用的库) 131 |-- libdex (dex的库) 132 |-- libnativehelper (Support functions for Android's class libraries) 133 |-- tests (测试代码) 134 |-- tools (工具) 135 `-- vm (虚拟机实现) 136 137 development 目录 (开发者需要的一些例程及工具) 138 |-- apps (一些核心应用程序) 139 | |-- BluetoothDebug (蓝牙调试程序) 140 | |-- CustomLocale (自定义区域设置) 141 | |-- Development (开发) 142 | |-- Fallback (和语言相关的一个程序) 143 | |-- FontLab (字库) 144 | |-- GestureBuilder (手势动作) 145 | |-- NinePatchLab (?) 146 | |-- OBJViewer (OBJ查看器) 147 | |-- SdkSetup (SDK安装器) 148 | |-- SpareParts (高级设置) 149 | |-- Term (远程登录) 150 | `-- launchperf (?) 151 |-- build (编译脚本模板) 152 |-- cmds (有个monkey工具) 153 |-- data (配置数据) 154 |-- docs (文档) 155 |-- host (主机端USB驱动等) 156 |-- ide (集成开发环境) 157 |-- ndk (本地开发套件——c语言开发套件) 158 |-- pdk (Plug Development Kit) 159 |-- samples (例程) 160 | |-- AliasActivity (?) 161 | |-- ApiDemos (API演示程序) 162 | |-- BluetoothChat (蓝牙聊天) 163 | |-- BrowserPlugin (浏览器插件) 164 | |-- BusinessCard (商业卡) 165 | |-- Compass (指南针) 166 | |-- ContactManager (联系人管理器) 167 | |-- CubeLiveWallpaper (动态壁纸的一个简单例程) 168 | |-- FixedGridLayout (像是布局) 169 | |-- GlobalTime (全球时间) 170 | |-- HelloActivity (Hello) 171 | |-- Home (Home) 172 | |-- JetBoy (jetBoy游戏) 173 | |-- LunarLander (貌似又是一个游戏) 174 | |-- MailSync (邮件同步) 175 | |-- MultiResolution (多分辨率) 176 | |-- MySampleRss (RSS) 177 | |-- NotePad (记事本) 178 | |-- RSSReader (RSS阅读器) 179 | |-- SearchableDictionary (目录搜索) 180 | |-- SimpleJNI (JNI例程) 181 | |-- SkeletonApp (空壳APP) 182 | |-- Snake (snake程序) 183 | |-- SoftKeyboard (软键盘) 184 | |-- Wiktionary (?维基) 185 | `-- WiktionarySimple(?维基例程) 186 |-- scripts (脚本) 187 |-- sdk (sdk配置) 188 |-- simulator (?模拟器) 189 |-- testrunner (?测试用) 190 `-- tools (一些工具) 191 192 external 目录 193 . 194 |-- aes (AES加密) 195 |-- apache-http (网页服务器) 196 |-- astl (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.) 197 |-- bison (自动生成语法分析器,将无关文法转换成C、C++) 198 |-- blktrace (blktrace is a block layer IO tracing mechanism) 199 |-- bluetooth (蓝牙相关、协议栈) 200 |-- bsdiff (diff工具) 201 |-- bzip2 (压缩工具) 202 |-- clearsilver (html模板系统) 203 |-- dbus (低延时、低开销、高可用性的IPC机制) 204 |-- dhcpcd (DHCP服务) 205 |-- dosfstools (DOS文件系统工具) 206 |-- dropbear (SSH2的server) 207 |-- e2fsprogs (EXT2文件系统工具) 208 |-- elfcopy (复制ELF的工具) 209 |-- elfutils (ELF工具) 210 |-- embunit (Embedded Unit Project) 211 |-- emma (java代码覆盖率统计工具) 212 |-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放) 213 |-- expat (Expat is a stream-oriented XML parser.) 214 |-- fdlibm (FDLIBM (Freely Distributable LIBM)) 215 |-- freetype (字体) 216 |-- fsck_msdos (dos文件系统检查工具) 217 |-- gdata (google的无线数据相关) 218 |-- genext2fs (genext2fs generates an ext2 filesystem as a normal (non-root) user) 219 |-- giflib (gif库) 220 |-- googleclient (google用户库) 221 |-- grub (This is GNU GRUB, the GRand Unified Bootloader.) 222 |-- gtest (Google C++ Testing Framework) 223 |-- icu4c (ICU(International Component for Unicode)在C/C++下的版本) 224 |-- ipsec-tools (This package provides a way to use the native IPsec functionality ) 225 |-- iptables (防火墙) 226 |-- jdiff (generate a report describing the difference between two public Java APIs.) 227 |-- jhead (jpeg头部信息工具) 228 |-- jpeg (jpeg库) 229 |-- junit (JUnit是一个Java语言的单元测试框架) 230 |-- kernel-headers (内核的一些头文件) 231 |-- libffi (libffi is a foreign function interface library.) 232 |-- libpcap (网络数据包捕获函数) 233 |-- libpng (png库) 234 |-- libxml2 (xml解析库) 235 |-- mtpd (一个命令) 236 |-- netcat (simple Unix utility which reads and writes dataacross network connections) 237 |-- netperf (网络性能测量工具) 238 |-- neven (看代码和JNI相关) 239 |-- opencore (多媒体框架) 240 |-- openssl (SSL加密相关) 241 |-- openvpn (VPN开源库) 242 |-- oprofile (OProfile是Linux内核支持的一种性能分析机制。) 243 |-- ping (ping命令) 244 |-- ppp (pppd拨号命令,好像还没有chat) 245 |-- proguard (Java class file shrinker, optimizer, obfuscator, and preverifier) 246 |-- protobuf (a flexible, efficient, automated mechanism for serializing structured data) 247 |-- qemu (arm模拟器) 248 |-- safe-iop (functions for performing safe integer operations ) 249 |-- skia (skia图形引擎) 250 |-- sonivox (sole MIDI solution for Google Android Mobile Phone Platform) 251 |-- speex (Speex编/解码API的使用(libspeex)) 252 |-- sqlite (数据库) 253 |-- srec (Nuance 公司提供的开源连续非特定人语音识别) 254 |-- strace (trace工具) 255 |-- svox (Embedded Text-to-Speech) 256 |-- tagsoup (TagSoup是一个Java开发符合SAX的HTML解析器) 257 |-- tcpdump (抓TCP包的软件) 258 |-- tesseract (Tesseract Open Source OCR Engine.) 259 |-- tinyxml (TinyXml is a simple, small, C++ XML parser) 260 |-- tremor (I stream and file decoder provides an embeddable,integer-only library) 261 |-- webkit (浏览器核心) 262 |-- wpa_supplicant (无线网卡管理) 263 |-- xmlwriter (XML 编辑工具) 264 |-- yaffs2 (yaffs文件系统) 265 `-- zlib (a general purpose data compression library) 266 267 268 269 frameworks 目录 (核心框架——java及C++语言) 270 . 271 |-- base (基本内容) 272 | |-- api (?都是xml文件,定义了java的api?) 273 | |-- awt (AWT库) 274 | |-- build (空的) 275 | |-- camera (摄像头服务程序库) 276 | |-- cmds (重要命令:am、app_proce等) 277 | |-- core (核心库) 278 | |-- data (字体和声音等数据文件) 279 | |-- docs (文档) 280 | |-- graphics (图形相关) 281 | |-- include (头文件) 282 | |-- keystore (和数据签名证书相关) 283 | |-- libs (库) 284 | |-- location (地区库) 285 | |-- media (媒体相关库) 286 | |-- obex (蓝牙传输库) 287 | |-- opengl (2D-3D加速库) 288 | |-- packages (设置、TTS、VPN程序) 289 | |-- sax (XML解析器) 290 | |-- services (各种服务程序) 291 | |-- telephony (电话通讯管理) 292 | |-- test-runner (测试工具相关) 293 | |-- tests (各种测试) 294 | |-- tools (一些叫不上名的工具) 295 | |-- vpn (VPN) 296 | `-- wifi (无线网络) 297 |-- opt (可选部分) 298 | |-- com.google.android (有个framework.jar) 299 | |-- com.google.android.googlelogin (有个client.jar) 300 | `-- emoji (standard message elements) 301 `-- policies (Product policies are operating system directions aimed at specific uses) 302 `-- base 303 |-- mid (MID设备) 304 `-- phone (手机类设备,一般用这个) 305 306 hardware 目录 (部分厂家开源的硬解适配层HAL代码) 307 |-- broadcom (博通公司) 308 | `-- wlan (无线网卡) 309 |-- libhardware (硬件库) 310 | |-- include (头文件) 311 | `-- modules (Default (and possibly architecture dependents) HAL modules) 312 | |-- gralloc (gralloc显示相关) 313 | `-- overlay (Skeleton for the "overlay" HAL module.) 314 |-- libhardware_legacy (旧的硬件库) 315 | |-- flashlight (背光) 316 | |-- gps (GPS) 317 | |-- include (头文件) 318 | |-- mount (旧的挂载器) 319 | |-- power (电源) 320 | |-- qemu (模拟器) 321 | |-- qemu_tracing (模拟器跟踪) 322 | |-- tests (测试) 323 | |-- uevent (uevent) 324 | |-- vibrator (震动) 325 | `-- wifi (无线) 326 |-- msm7k (高通7k处理器开源抽象层) 327 | |-- boot (启动) 328 | |-- libaudio (声音库) 329 | |-- libaudio-qsd8k (qsd8k的声音相关库) 330 | |-- libcamera (摄像头库) 331 | |-- libcopybit (copybit库) 332 | |-- libgralloc (gralloc库) 333 | |-- libgralloc-qsd8k (qsd8k的gralloc库) 334 | |-- liblights (背光库) 335 | `-- librpc (RPC库) 336 |-- ril (无线电抽象层) 337 | |-- include (头文件) 338 | |-- libril (库) 339 | |-- reference-cdma-sms (cdma短信参考) 340 | |-- reference-ril (ril参考) 341 | `-- rild (ril后台服务程序) 342 `-- ti (ti公司开源HAL) 343 |-- omap3 (omap3处理器) 344 | |-- dspbridge (DSP桥) 345 | |-- libopencorehw (opencore硬件库) 346 | |-- liboverlay (overlay硬件库) 347 | |-- libstagefrighthw (stagefright硬件库) 348 | `-- omx (omx组件) 349 `-- wlan (无线网卡) 350 351 prebuilt 目录 (x86和arm架构下预编译的一些资源) 352 . 353 |-- android-arm (arm-android相关) 354 | |-- gdbserver (gdb调试器) 355 | `-- kernel (模拟的arm内核) 356 |-- android-x86 (x86-android相关) 357 | `-- kernel (空的) 358 |-- common (通用编译好的代码,应该是java的) 359 |-- darwin-x86 (drawin x86平台) 360 | `-- toolchain (工具链) 361 | |-- arm-eabi-4.2.1 362 | |-- arm-eabi-4.3.1 363 | `-- arm-eabi-4.4.0 364 |-- darwin-x86_64 (drawin x86 64bit平台) 365 |-- linux-x86 (linux x86平台) 366 | `-- toolchain (工具链,我们应该主要用这个) 367 | |-- arm-eabi-4.2.1 368 | |-- arm-eabi-4.3.1 369 | |-- arm-eabi-4.4.0 370 | `-- i686-unknown-linux-gnu-4.2.1 (x86版编译器) 371 |-- linux-x86_64 (linux x86 64bit平台) 372 |-- windows (windows平台) 373 `-- windows-x86_64 (64bit windows平台) 374 375 376 system 目录 (底层文件系统库、应用及组件——C语言) 377 . 378 |-- Bluetooth (蓝牙相关) 379 |-- core (系统核心工具盒接口) 380 | |-- adb (adb调试工具) 381 | |-- cpio (cpio工具,创建img) 382 | |-- debuggerd (调试工具) 383 | |-- fastboot (快速启动相关) 384 | |-- include (系统接口头文件) 385 | |-- init (init程序源代码) 386 | |-- libacc (轻量级C编译器) 387 | |-- libctest (libc测试相关) 388 | |-- libcutils (libc工具) 389 | |-- liblog (log库) 390 | |-- libmincrypt (加密库) 391 | |-- libnetutils (网络工具库) 392 | |-- libpixelflinger (图形处理库) 393 | |-- libsysutils (系统工具库) 394 | |-- libzipfile (zip库) 395 | |-- logcat (查看log工具) 396 | |-- logwrapper (log封装工具) 397 | |-- mkbootimg (制作启动boot.img的工具盒脚本) 398 | |-- netcfg (网络配置netcfg源码) 399 | |-- nexus (google最新手机的代码) 400 | |-- rootdir (rootfs,包含一些etc下的脚本和配置) 401 | |-- sh (shell代码) 402 | |-- toolbox (toolbox,类似busybox的工具集) 403 | `-- vold (SD卡管理器) 404 |-- extras (额外工具) 405 | |-- latencytop (a tool for software developers ,identifying system latency happen) 406 | |-- libpagemap (pagemap库) 407 | |-- librank (Java Library Ranking System库) 408 | |-- procmem (pagemap相关) 409 | |-- procrank (Java Library Ranking System相关) 410 | |-- showmap (showmap工具) 411 | |-- showslab (showslab工具) 412 | |-- sound (声音相关) 413 | |-- su (su命令源码) 414 | |-- tests (一些测试工具) 415 | `-- timeinfo (时区相关) 416 `-- wlan (无线相关) 417 `-- ti (ti网卡相关工具及库) 418 419 420 packages 目录 421 . 422 |-- apps (应用程序库) 423 | |-- AlarmClock (闹钟) 424 | |-- Bluetooth (蓝牙) 425 | |-- Browser (浏览器) 426 | |-- Calculator (计算器) 427 | |-- Calendar (日历) 428 | |-- Camera (相机) 429 | |-- CertInstaller (在Android中安装数字签名,被调用) 430 | |-- Contacts (拨号(调用)、联系人、通话记录) 431 | |-- DeskClock (桌面时钟) 432 | |-- Email (Email) 433 | |-- Gallery (相册,和Camera类似,多了列表) 434 | |-- Gallery3D (?3D相册) 435 | |-- GlobalSearch (为google搜索服务,提供底层应用) 436 | |-- GoogleSearch (google搜索) 437 | |-- HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能) 438 | |-- IM (即时通讯,为手机提供信号发送、接收、通信的服务) 439 | |-- Launcher (登陆启动项,显示图片框架等等图形界面) 440 | |-- Launcher2 (登陆启动项,负责应用的调用) 441 | |-- Mms (?彩信业务) 442 | |-- Music (音乐播放器) 443 | |-- PackageInstaller (安装、卸载程序的响应) 444 | |-- Phone (电话拨号程序) 445 | |-- Provision (预设应用的状态,使能应用) 446 | |-- Settings (开机设定,包括电量、蓝牙、设备信息、界面、wifi等) 447 | |-- SoundRecorder (录音机,可计算存储所需空间和时间) 448 | |-- Stk (接收和发送短信) 449 | |-- Sync (空) -------○1 450 | |-- Updater (空) 451 | `-- VoiceDialer (语音识别通话) 452 |-- inputmethods (输入法) 453 | |-- LatinIME (拉丁文输入法) 454 | |-- OpenWnn (OpenWnn输入法) 455 | `-- PinyinIME (拼音输入法) 456 |-- providers (提供器,提供应用程序、界面所需的数据) 457 | |-- ApplicationsProvider (应用程序提供器,提供应用程序启动项、更新等) 458 | |-- CalendarProvider (日历提供器) 459 | |-- ContactsProvider (联系人提供器) 460 | |-- DownloadProvider (下载管理提供器) 461 | |-- DrmProvider (创建和更新数据库时调用) 462 | |-- GoogleContactsProvider (联系人提供器的子类,用以同步联系人) 463 | |-- GoogleSubscribedFeedsProvider(设置信息提供器) 464 | |-- ImProvider (空) 465 | |-- ManagementProvider (空) 466 | |-- MediaProvider (媒体提供器,提供存储数据) 467 | |-- TelephonyProvider (彩信提供器) 468 | |-- UserDictionaryProvider (用户字典提供器,提供用户常用字字典) 469 | `-- WebSearchProvider (空) 470 |-- services 471 | |-- EasService (空) 472 | `-- LockAndWipe (空) 473 `-- wallpapers (墙纸) 474 |-- Basic (基本墙纸,系统内置墙纸) 475 |-- LivePicker (选择动态壁纸) 476 |-- MagicSmoke (壁纸特殊效果) 477 `-- MusicVisualization (音乐可视化,图形随音乐而变化) 478 479 ○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。 480 481 482 vendor 目录 (厂家定制内容) 483 484 |-- aosp (android open source project) 485 | `-- products (一些板级规则) 486 |-- htc (HTC公司) 487 | |-- common-open (通用部分) 488 | | `-- akmd (解压img用的工具) 489 | |-- dream-open (G1开放部分) 490 | |-- prebuilt-open (预编译开放部分) 491 | `-- sapphire-open (sapphire这款型号开放内容) 492 |-- pv-open (没东西) 493 |-- qcom (里面基本是空的) 494 `-- sample (google提供的样例) 495 |-- apps (应用) 496 | |-- client (用户) 497 | `-- upgrade (升级) 498 |-- frameworks (框架) 499 | `-- PlatformLibrary (平台库) 500 |-- products (产品) 501 |-- sdk_addon (sdk添加部分) 502 `-- skins (皮肤) 503 `-- WVGAMedDpi (WVGA适用的图片) 504 505 SDK和OUT目录没有列出