基于android2.3.5系统:源码下载及android体系架构
***************************************************************************************************************************
作者:EasyWave 时间:2012.07.21
类别:Android系统源码分析 声明:转载,请保留链接
注意:如有错误,欢迎指正。这些是我学习的日志文章......
***************************************************************************************************************************
android的源码的下载可以到 http://www.verycd.com/topics/2906182/ 上去下载,这个已经是编译通过的。感谢各位大侠的无私奉献,在android的官网上下载实在是太慢了,我就直接从这里下载了,不过我暂时没有用来编译android,我的学习方法是:先熟悉整个android的架构,弄明白android系统的各个组件的分布以及代码分析,并将学习过程放在我的blog上。到时候可以回过头来看看,自己到底得到了什么。主要是没有钱去卖开发板,因此只能用goldfish的代码来了解和分析android与内核之间的硬件抽象层的关系,因为在整个android的移植过程中,硬件抽象层是最重要的,毕竟它是android和linux内核的中间桥梁。我下载的代码图片如下:
linux的内核的架构就不说了,android下的linux内核跟普通的内核没有太大的区别。只是添加了一些Andorid特有的代码组件。
一、应用程序
Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web 浏览器。
内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。
通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
三、程序库
Android 包含一些C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。
媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D 和 3D 图层的无缝融合。
LibWebCore - 一个最新的web 浏览器引擎用,支持Android 浏览器和一个可嵌入的web 视图。
SGL - 底层的 2D 图形引擎
3D libraries - 基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D 软加速。
FreeType -位图(bitmap)和矢量(vector)字体显示。
SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
四、Android 运行库
Android 包括了一个核心库,该核心库提供了JAVA 编程语言核心库的大多数功能。
每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟 机实例。Dalvik 被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik 虚拟机执行(.dex)的 Dalvik 可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA 编译器编译,然后通过 SDK 中 的 "dx" 工具转化成.dex格式由虚拟机执行。 Dalvik 虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
五、Linux 内核
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。
六:android源码的目录结构 【以下网络摘抄】
|-- Makefile ! l/ a5 n% S% @- `0 d# z# a$ P4 V3 o7 R |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development (应用程序开发相关) |-- external (android使用的一些开源的模组) |-- frameworks (核心框架——java及C++语言) |-- hardware (部分厂家开源的硬解适配层HAL代码) , _8 I" ?2 P8 k: u P |-- out (编译完成后的代码输出与此目录) 0 R! r6 G7 v) \; @ |-- packages (应用程序包) |-- prebuilt (x86和arm架构下预编译的一些资源) & g% c6 b" S. r; r! b: ^ |-- sdk (sdk及模拟器) |-- system (底层文件系统库、应用及组件——C语言) `-- vendor (厂商定制代码) 2 S6 U. g, s& g3 l! }" O7 v3 p bionic 目录 ( W* d5 d8 }2 w9 R |-- libc (C库) | |-- arch-arm (ARM架构,包含系统调用汇编实现) 6 m/ M* t4 X- N$ i% C5 l | |-- arch-x86 (x86架构,包含系统调用汇编实现) & U0 k% u% l. c2 j# N2 M7 j! W' L | |-- bionic (由C实现的功能,架构无关) | |-- docs (文档) | |-- include (头文件) ; Q% v5 D8 p7 P% z+ K; _4 x | |-- inet (?inet相关,具体作用不明) 9 W; s5 r! t0 A" X6 w | |-- kernel (Linux内核中的一些头文件) ( |7 D& N, q6 P2 c" g1 _( _0 P | |-- netbsd (?nesbsd系统相关,具体作用不明) | |-- private (?一些私有的头文件) | |-- stdio (stdio实现) | |-- stdlib (stdlib实现) | |-- string (string函数实现) 8 c4 { A4 a) d: } | |-- tools (几个工具) * B3 a* W( |! x& {, U | |-- tzcode (时区相关代码) | |-- unistd (unistd实现) ; f( U& U! b, `( ? | `-- zoneinfo (时区信息) |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能) |-- libm (libm数学库的实现,) | |-- alpha (apaha架构) ' R$ u9 I" e; n5 G3 Q" O4 M | |-- amd64 (amd64架构) | |-- arm (arm架构) | |-- bsdsrc (?bsd的源码) | |-- i386 (i386架构) + [. W: {$ c- k! f/ o | |-- i387 (i387架构?) # M+ U; _; V& R4 e: R5 H' x- V | |-- ia64 (ia64架构) 2 F( v1 g/ y! b | |-- include (头文件) | |-- man (数学函数,后缀名为.3,一些为freeBSD的库文件) | |-- powerpc (powerpc架构) | |-- sparc64 (sparc64架构) 6 i7 L& u( g) y" j' U# w0 A% M | `-- src (源代码) |-- libstdc++ (libstdc++ C++实现库) . W' K4 I& C* O: c, m9 G | |-- include (头文件) / n, @% D# w2 p- k# K+ N5 i% r | `-- src (源码) - Q5 t. E4 \0 ?4 }; m+ I7 k |-- libthread_db (多线程程序的调试器库) | `-- include (头文件) `-- linker (动态链接器) 7 b1 z, w' ]) u/ m6 y) \% r. @; n `-- arch (支持arm和x86两种架构) * s6 g% e2 r5 F1 O. { bootable 目录 . |-- bootloader (适合各种bootloader的通用代码) ; \$ I8 Z+ c% ] | `-- legacy (估计不能直接使用,可以参考) 4 S: Z% I: w0 F" P: Y; D* M& N | |-- arch_armv6 (V6架构,几个简单的汇编文件) | |-- arch_msm7k (高通7k处理器架构的几个基本驱动) 8 g$ A2 ?: q9 d0 j6 Z- u | |-- include (通用头文件和高通7k架构头文件) | |-- libboot (启动库,都写得很简单) ' z: J; w5 S" p' n' z! d | |-- libc (一些常用的c函数) | |-- nandwrite (nandwirte函数实现) | `-- usbloader (usbloader实现) & }* x1 D+ D' W$ x, {/ O |-- diskinstaller (android镜像打包器,x86可生产iso) # V) N# G* W4 s: g$ A* Q# R `-- recovery (系统恢复相关) 1 K, Y' ~" J- @, }$ L N |-- edify (升级脚本使用的edify脚本语言) 9 m+ U! d& R/ w7 j2 l |-- etc (init.rc恢复脚本) , l4 k: s, S0 S* ~6 o R! N |-- minui (一个简单的UI) - ~. ^. b1 V# g0 |# P |-- minzip (一个简单的压缩工具) 4 K6 N( V/ v( r9 q# K& q8 T- L |-- mtdutils (mtd工具) 5 l* N \7 U& h/ _# Z. j: S3 U$ O, M |-- res (资源) 1 X8 \4 k$ K# B3 B# c | `-- images (一些图片) * s6 }8 F) b7 ~: B J |-- tools (工具) 7 c5 k2 ]/ v8 B J | `-- ota (OTA Over The Air Updates升级工具) 0 t6 ]# {5 s: z1 d" s) M, V. C9 b `-- updater (升级器) , e( h0 k" a; Y/ m: a5 P build目录 . |-- core (核心编译规则) 0 Y" E! X3 F: U1 N {) c |-- history (历史记录) |-- libs 1 ?- N; d7 @7 H/ ]* p8 \ | `-- host (主机端库,有android “cp”功能替换) |-- target (目标机编译对象) ) [$ H; d9 c7 T' [+ \( i3 Z | |-- board (开发平台) | | |-- emulator (模拟器) . k4 {( m4 k5 W8 u2 w* }# R+ c | | |-- generic (通用) ( v& U, x5 ^7 A# \. ~ W | | |-- idea6410 (自己添加的) | | `-- sim (最简单) 7 `' }8 n e) v$ Z( c | `-- product (开发平台对应的编译规则) 7 n" h- X0 l: p; x; P: u1 } | `-- security (密钥相关) `-- tools (编译中主机使用的工具及脚本) |-- acp (Android "acp" Command) $ ^+ A" l0 i+ m' w- a/ R |-- apicheck (api检查工具) |-- applypatch (补丁工具) 9 U0 k& F2 g8 Q0 c! _ |-- apriori (预链接工具) |-- atree (tree工具) # y0 m& l {. Q |-- bin2asm (bin转换为asm工具) # a+ W+ o7 Q9 M. r |-- check_prereq (检查编译时间戳工具) 7 @4 w. K6 u( Q6 r# r8 G |-- dexpreopt (模拟器相关工具,具体功能不明) " S3 |9 \& f6 n( S" d+ F |-- droiddoc (?作用不明,java语言,网上有人说和JDK5有关) ( y+ W2 B2 l T& N! u' _' t* B; ^ |-- fs_config (This program takes a list of files and directories) ' Z9 ~& I/ @. T3 V0 d |-- fs_get_stats (获取文件系统状态) 2 X0 v1 `$ R% q |-- iself (判断是否ELF格式) |-- isprelinked (判断是否prelinked) : q: b; C4 |, l# J( i0 M$ H |-- kcm (按键相关) - ?. u2 C1 S( y3 M9 D6 x$ C1 d) f |-- lsd (List symbol dependencies) & N; `( r- m6 L9 I7 m, y3 j |-- releasetools (生成镜像的工具及脚本) |-- rgb2565 (rgb转换为565) |-- signapk (apk签名工具) 0 o, U8 u5 |8 u* z* W; {: E8 x |-- soslim (strip工具) 7 H9 v! W3 v' d- n& Y( o' L: v6 l `-- zipalign (zip archive alignment tool) dalvik目录 dalvik虚拟机 . |-- dalvikvm (main.c的目录) 4 `3 @8 x: {- Y |-- dexdump (dex反汇编) : S' [ f; w9 z |-- dexlist (List all methods in all concrete classes in a DEX file.) $ c7 Z4 r$ e4 P, @ |-- dexopt (预验证与优化) 7 v! q1 C0 n" {" U, {+ `4 { |-- docs (文档) |-- dvz (和zygote相关的一个命令) |-- dx (dx工具,将多个java转换为dex) - I& L1 \7 Z' Z# K |-- hit (?java语言写成) |-- libcore (核心库) j b. h1 e. Z8 h" o |-- libcore-disabled (?禁用的库) |-- libdex (dex的库) $ \0 R/ T, O0 t0 b: _, f: g |-- libnativehelper (Support functions for Android's class libraries) % L3 d; M; t4 c. F) f- P- o |-- tests (测试代码) % c" k+ l2 L( U |-- tools (工具) - }2 j( T. g& V" ~6 \ `-- vm (虚拟机实现) 1 c/ M$ _. i$ t5 M " }' x: V4 J) N' l* |, K4 Z development 目录 (开发者需要的一些例程及工具) |-- apps (一些核心应用程序) | |-- BluetoothDebug (蓝牙调试程序) | |-- CustomLocale (自定义区域设置) | |-- Development (开发) | |-- Fallback (和语言相关的一个程序) ! }) y- W8 ^; |; Y, u | |-- FontLab (字库) % i" F! w; E/ [1 q | |-- GestureBuilder (手势动作) | |-- NinePatchLab (?) 9 c* m' _ w$ p, @ L- \ | |-- OBJViewer (OBJ查看器) 4 b$ L- G) J9 q4 C8 n4 M | |-- SdkSetup (SDK安装器) | |-- SpareParts (高级设置) | |-- Term (远程登录) | `-- launchperf (?) 8 v2 R4 F' d& p* m, s |-- build (编译脚本模板) |-- cmds (有个monkey工具) |-- data (配置数据) 6 f, \& D; C Y1 O |-- docs (文档) |-- host (主机端USB驱动等) g+ E& ?7 C/ L# _3 g5 O |-- ide (集成开发环境) |-- ndk (本地开发套件——c语言开发套件) |-- pdk (Plug Development Kit) |-- samples (例程) i& X) w, M) I } | |-- AliasActivity (?) ]/ Q0 [* l8 l7 e( ?( I, w; T | |-- ApiDemos (API演示程序) | |-- BluetoothChat (蓝牙聊天) . j" x; A7 p! h3 s" P | |-- BrowserPlugin (浏览器插件) / h7 x2 x9 m2 R5 k, c* C | |-- BusinessCard (商业卡) 0 L3 ]$ D1 R- ?8 x. c | |-- Compass (指南针) 0 ]6 [4 U; a+ I& T$ K | |-- ContactManager (联系人管理器) | |-- CubeLiveWallpaper (动态壁纸的一个简单例程) | |-- FixedGridLayout (像是布局) - C8 P' C( @; P) c2 u7 s( { | |-- GlobalTime (全球时间) 1 m+ ?5 J& `; C6 w0 Y | |-- HelloActivity (Hello) 1 Q0 i6 t! }' f6 H' Z2 r | |-- Home (Home) | |-- JetBoy (jetBoy游戏) | |-- LunarLander (貌似又是一个游戏) | |-- MailSync (邮件同步) | |-- MultiResolution (多分辨率) 3 _% x* Z- l! h/ V0 i# h | |-- MySampleRss (RSS) 5 E- ]. v8 \2 `: b | |-- NotePad (记事本) | |-- RSSReader (RSS阅读器) 9 G f0 r1 B+ O/ x; P5 [: ?# t | |-- SearchableDictionary (目录搜索) & Q) [+ @: V" ~% @9 C: m# B | |-- SimpleJNI (JNI例程) | |-- SkeletonApp (空壳APP) # ]& E! j9 U" w" ` | |-- Snake (snake程序) 4 T- }4 T$ [, {8 R% T7 y- R | |-- SoftKeyboard (软键盘) 8 e- b, `# |+ s7 P: P$ n | |-- Wiktionary (?维基) * z+ x6 r' Q0 E; T* K | `-- WiktionarySimple(?维基例程) ( @' k- v: | c1 f; y- Z |-- scripts (脚本) |-- sdk (sdk配置) 3 p! T- I m4 E |-- simulator (?模拟器) $ x* Z/ ^' P7 ?; k$ `. | |-- testrunner (?测试用) 9 k2 X% W, }) l- G* [% r `-- tools (一些工具) external 目录 . 8 P6 R5 c9 \1 ?( W/ ^ |-- aes (AES加密) |-- apache-http (网页服务器) |-- astl (ASTL (Android STL) is a slimmed-down version of the regular C++ STL.) |-- bison (自动生成语法分析器,将无关文法转换成C、C++) $ s ?2 i5 Y8 ^" t1 v; V; i |-- blktrace (blktrace is a block layer IO tracing mechanism) |-- bluetooth (蓝牙相关、协议栈) ! U# M) M/ A9 X+ T9 } |-- bsdiff (diff工具) ; o( r9 n7 g% b |-- bzip2 (压缩工具) |-- clearsilver (html模板系统) |-- dbus (低延时、低开销、高可用性的IPC机制) |-- dhcpcd (DHCP服务) |-- dosfstools (DOS文件系统工具) |-- dropbear (SSH2的server) |-- e2fsprogs (EXT2文件系统工具) - C" B$ v: r9 L2 h; f |-- elfcopy (复制ELF的工具) 1 t) K5 W0 m2 K |-- elfutils (ELF工具) |-- embunit (Embedded Unit Project) 4 M% p/ D6 G/ O; D) c* b# l |-- emma (java代码覆盖率统计工具) ! ?& n5 n G7 K D, V' ^5 y/ h |-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放) 0 E( n `! `: v/ Z ?6 I! _* r: Y |-- expat (Expat is a stream-oriented XML parser.) |-- fdlibm (FDLIBM (Freely Distributable LIBM)) 6 m0 V* [6 Y" W; \ |-- freetype (字体) |-- fsck_msdos (dos文件系统检查工具) |-- gdata (google的无线数据相关) # N9 d7 g5 e Q' m9 W6 P |-- genext2fs (genext2fs generates an ext2 filesystem as a normal (non-root) user) |-- giflib (gif库) |-- googleclient (google用户库) 2 ~- X/ c" D0 B% f y |-- grub (This is GNU GRUB, the GRand Unified Bootloader.) |-- gtest (Google C++ Testing Framework) 7 Q- _/ o3 s; R |-- icu4c (ICU(International Component for Unicode)在C/C++下的版本) 7 p" \ N* Y" r7 [3 O |-- ipsec-tools (This package provides a way to use the native IPsec functionality ) + N8 S# F7 l8 z8 [- r; \& M |-- iptables (防火墙) |-- jdiff (generate a report describing the difference between two public Java APIs.) ; H3 S- D! p: Z) Z/ @ |-- jhead (jpeg头部信息工具) P9 K8 f+ ^2 t. ?# t" s6 \ |-- jpeg (jpeg库) ; t1 I+ S" l4 k |-- junit (JUnit是一个Java语言的单元测试框架) ; b# y) a c; \3 ]8 y( N+ q |-- kernel-headers (内核的一些头文件) |-- libffi (libffi is a foreign function interface library.) |-- libpcap (网络数据包捕获函数) |-- libpng (png库) % Y/ |0 I; C+ o( B |-- libxml2 (xml解析库) |-- mtpd (一个命令) : A& |% Z+ O; r/ D6 g: ^: { |-- netcat (simple Unix utility which reads and writes dataacross network connections) 2 a% \, B8 a [8 x |-- netperf (网络性能测量工具) * L3 N9 X5 ^6 I. E7 w |-- neven (看代码和JNI相关) * I, Z- y' G1 F% v* m: j. x |-- opencore (多媒体框架) |-- openssl (SSL加密相关) 3 Q- L5 @+ z* P2 Q w# x( Y& K9 \3 G |-- openvpn (VPN开源库) |-- oprofile (OProfile是Linux内核支持的一种性能分析机制。) 4 ]6 }- V2 Q$ K8 U9 {- |2 [ |-- ping (ping命令) : T# c" x8 V. a H/ H4 K T |-- ppp (pppd拨号命令,好像还没有chat) R3 ~6 U5 u0 E4 b |-- proguard (Java class file shrinker, optimizer, obfuscator, and preverifier) 7 a, ]" Q7 s! N& x, C A2 H |-- protobuf (a flexible, efficient, automated mechanism for serializing structured data) 9 d4 R% Y+ e; p& P! P& @2 x" I |-- qemu (arm模拟器) |-- safe-iop (functions for performing safe integer operations ) |-- skia (skia图形引擎) |-- sonivox (sole MIDI solution for Google Android Mobile Phone Platform) " b: E" {1 K( i) ] |-- speex (Speex编/解码API的使用(libspeex)) |-- sqlite (数据库) |-- srec (Nuance 公司提供的开源连续非特定人语音识别) |-- strace (trace工具) ; H) L7 u0 n; E$ T, x" F( u6 | |-- svox (Embedded Text-to-Speech) , D, o7 ~3 \! V |-- tagsoup (TagSoup是一个Java开发符合SAX的HTML解析器) - v, ^6 U+ [1 L8 o/ Q( K: B |-- tcpdump (抓TCP包的软件) + n6 z3 O$ Y7 k: u& I4 P4 k |-- tesseract (Tesseract Open Source OCR Engine.) |-- tinyxml (TinyXml is a simple, small, C++ XML parser) & m0 ~+ {0 S; ?, M; y; E/ Z% M; M |-- tremor (I stream and file decoder provides an embeddable,integer-only library) & G$ z/ v/ Z3 q* o6 ]7 v |-- webkit (浏览器核心) |-- wpa_supplicant (无线网卡管理) " I$ q/ U$ H: x1 ~9 v0 C) h |-- xmlwriter (XML 编辑工具) |-- yaffs2 (yaffs文件系统) `-- zlib (a general purpose data compression library) frameworks 目录 (核心框架——java及C++语言) 8 B* l9 b: R& `/ ` . |-- base (基本内容) | |-- api (?都是xml文件,定义了java的api?) | |-- awt (AWT库) # Q5 H9 d/ ~0 h0 K# v' e3 j, Z7 ~ | |-- build (空的) $ q! W- T( t9 n$ t g% d3 | | |-- camera (摄像头服务程序库) | |-- cmds (重要命令:am、app_proce等) * x( c4 A7 Q, Q+ N/ P1 { | |-- core (核心库) # Z) j6 J5 F0 o* Q/ ]6 j | |-- data (字体和声音等数据文件) | |-- docs (文档) | |-- graphics (图形相关) 8 f: {; x# x: |5 {0 [ | |-- include (头文件) | |-- keystore (和数据签名证书相关) 5 K5 Q0 e2 m8 R; p8 k0 |6 d | |-- libs (库) | |-- location (地区库) | |-- media (媒体相关库) . Z/ Q6 t7 \# f& W# p( q( H) t | |-- obex (蓝牙传输库) | |-- opengl (2D-3D加速库) | |-- packages (设置、TTS、VPN程序) | |-- sax (XML解析器) / x- Q4 i+ b9 z | |-- services (各种服务程序) | |-- telephony (电话通讯管理) ; Y, x4 x5 \ x3 A7 T a | |-- test-runner (测试工具相关) | |-- tests (各种测试) | |-- tools (一些叫不上名的工具) | |-- vpn (VPN) / B6 U4 J, K; {- k0 B0 m# A | `-- wifi (无线网络) 9 R/ a# S9 T4 [ |-- opt (可选部分) | |-- com.google.android (有个framework.jar) ! R# R: u8 g4 Q2 S' d | |-- com.google.android.googlelogin (有个client.jar) $ W1 s1 ]8 c" ] | `-- emoji (standard message elements) ; N5 r, U5 X' \& w; {* u `-- policies (Product policies are operating system directions aimed at specific uses) `-- base - \5 b+ n* E: X {1 I: w' { i |-- mid (MID设备) `-- phone (手机类设备一般用这个,与锁屏有关的代码) 6 T8 x" i. `: L! b0 e4 |' A; C7 P hardware 目录 (部分厂家开源的硬解适配层HAL代码) |-- broadcom (博通公司) | `-- wlan (无线网卡) |-- libhardware (硬件库) 7 i* Y/ w' M2 D- l7 b% t4 A | |-- include (头文件) | `-- modules (Default (and possibly architecture dependents) HAL modules) ) ^; U: `4 w6 S5 W3 V | |-- gralloc (gralloc显示相关) | `-- overlay (Skeleton for the "overlay" HAL module.) 8 C" c, ]+ d. J. _6 H. f j |-- libhardware_legacy (旧的硬件库) 3 d9 l% v, j2 w( s! a8 W% d7 c | |-- flashlight (背光) & F. Z0 z) g, D! @" ?9 T | |-- gps (GPS) | |-- include (头文件) 2 s: r$ \) ?8 M* j7 Q, C | |-- mount (旧的挂载器) ) `/ c2 z9 c7 D7 _ | |-- power (电源) | |-- qemu (模拟器) | |-- qemu_tracing (模拟器跟踪) 2 A! q- f% r' h+ b. | | |-- tests (测试) | |-- uevent (uevent) ! p) i3 G0 d! n h7 a- ^. M | |-- vibrator (震动) | `-- wifi (无线) |-- msm7k (高通7k处理器开源抽象层) 7 ~& h2 U. w! q2 z5 f$ |0 l; l | |-- boot (启动) . {' m1 V+ _3 G | |-- libaudio (声音库) | |-- libaudio-qsd8k (qsd8k的声音相关库) | |-- libcamera (摄像头库) | |-- libcopybit (copybit库) # W; ~1 @+ l% } {" ^) } | |-- libgralloc (gralloc库) x! c# X3 u; [& T | |-- libgralloc-qsd8k (qsd8k的gralloc库) 2 @6 ^/ U- h1 o! C* {# w, M | |-- liblights (背光库) ' p {% J# n8 X | `-- librpc (RPC库) |-- ril (无线电抽象层) | |-- include (头文件) : J0 C9 K Z* I' m( o# B5 t: o | |-- libril (库) ; H. ^! n _" D2 ]" X6 [1 B# @ | |-- reference-cdma-sms (cdma短信参考) ' j$ [5 v( T9 K6 U0 \ | |-- reference-ril (ril参考) | `-- rild (ril后台服务程序) 4 E- w# G) q8 z7 p" K `-- ti (ti公司开源HAL) |-- omap3 (omap3处理器) | |-- dspbridge (DSP桥) | |-- libopencorehw (opencore硬件库) | |-- liboverlay (overlay硬件库) 6 B$ r3 ]3 V# s y" H: K | |-- libstagefrighthw (stagefright硬件库) | `-- omx (omx组件) ! d( X5 R n5 {9 M `-- wlan (无线网卡), j) u4 P0 C' n& d" P$ U* r5 s packages 目录 . |-- apps (应用程序库) | |-- AlarmClock (闹钟) | |-- Bluetooth (蓝牙) * m9 e) X% o* A: |- }' K | |-- Browser (浏览器) 9 M0 w9 ~$ `) P3 Y3 }$ c | |-- Calculator (计算器) | |-- Calendar (日历) 2 u' s& \0 h, Y( s: ] | |-- Camera (相机) 5 F. e \, x2 V+ |- g | |-- CertInstaller (在Android中安装数字签名,被调用) * }0 U! _1 O1 u2 M | |-- Contacts (拨号(调用)、联系人、通话记录) | |-- DeskClock (桌面时钟) 5 N$ c2 a7 l7 P# ]8 ? | |-- Email (Email) | |-- Gallery (相册,和Camera类似,多了列表) : X5 \8 V9 m8 g& _ | |-- Gallery3D (?3D相册) : f9 k2 `$ ~3 I' g; a7 X/ ?; j | |-- GlobalSearch (为google搜索服务,提供底层应用) | |-- GoogleSearch (google搜索) | |-- HTMLViewer (浏览器附属界面,被浏览器应用调用,同时提供存储记录功能) | |-- IM (即时通讯,为手机提供信号发送、接收、通信的服务) & v8 d. @" a3 e8 P n( [6 P6 G8 S | |-- Launcher (登陆启动项,显示图片框架等等图形界面) | |-- Launcher2 (登陆启动项,负责应用的调用) | |-- Mms (?彩信业务) | |-- Music (音乐播放器) 5 J2 X9 h0 |# f2 q9 e# Q | |-- PackageInstaller (安装、卸载程序的响应) 8 B3 L& |' E. U/ s e5 t0 s+ S | |-- Phone (电话拨号程序) / |2 T! s; c: ^ | |-- Provision (预设应用的状态,使能应用) | |-- Settings (开机设定,包括电量、蓝牙、设备信息、界面、wifi等) 3 f+ C# m2 J/ P0 q) n# I- I | |-- SoundRecorder (录音机,可计算存储所需空间和时间) | |-- Stk (接收和发送短信) | |-- Sync (空) -------○1 | |-- Updater (空) + ^. `; s g2 s" Z; P( B8 q | `-- VoiceDialer (语音识别通话) |-- inputmethods (输入法) | |-- LatinIME (拉丁文输入法) H! n4 e Y9 S' l* v' w5 O | |-- OpenWnn (OpenWnn输入法) . A5 V7 j8 ]$ g. G | `-- PinyinIME (拼音输入法) $ a% n8 j2 d1 L3 L# n |-- providers (提供器,提供应用程序、界面所需的数据) | |-- ApplicationsProvider (应用程序提供器,提供应用程序启动项、更新等) 9 q+ Q1 O) ~+ O5 F4 w% V% O | |-- CalendarProvider (日历提供器) | |-- ContactsProvider (联系人提供器) | |-- DownloadProvider (下载管理提供器) | |-- DrmProvider (创建和更新数据库时调用) * Y$ w9 w7 r* P/ }! R | |-- GoogleContactsProvider (联系人提供器的子类,用以同步联系人) * W* X- c |) K7 r# U | |-- GoogleSubscribedFeedsProvider(设置信息提供器) ( F) v/ |0 O. }! D; v/ X | |-- ImProvider (空) | |-- ManagementProvider (空) | |-- MediaProvider (媒体提供器,提供存储数据) * s2 n% }) c7 j/ q: S | |-- TelephonyProvider (彩信提供器) 7 b# i2 P8 d3 h | |-- UserDictionaryProvider (用户字典提供器,提供用户常用字字典) | `-- WebSearchProvider (空) , K* T3 z- n& r/ ~ |-- services ; b4 V I/ I2 g, Z- R* ` | |-- EasService (空) | `-- LockAndWipe (空) `-- wallpapers (墙纸) |-- Basic (基本墙纸,系统内置墙纸) - W0 M4 r/ k3 r' k) l |-- LivePicker (选择动态壁纸) |-- MagicSmoke (壁纸特殊效果) `-- MusicVisualization (音乐可视化,图形随音乐而变化) 7 q; p) a i8 [/ D# T ○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。 prebuilt 目录 (x86和arm架构下预编译的一些资源) " g- X! Q: | w . ' ?8 A2 o- z; c9 h |-- android-arm (arm-android相关) | |-- gdbserver (gdb调试器) : x) }9 p) b% q | `-- kernel (模拟的arm内核) |-- android-x86 (x86-android相关) + {# |( A) `# l/ N$ r K: N | `-- kernel (空的) 3 ]2 t1 ]- h$ g3 b7 y |-- common (通用编译好的代码,应该是java的) |-- darwin-x86 (drawin x86平台) 2 l3 q5 |* m, R4 L6 w3 l. M | `-- toolchain (工具链) 3 c* R f. E' V+ `8 B | |-- arm-eabi-4.2.1 + x' E- Q3 Q. z | |-- arm-eabi-4.3.1 | `-- arm-eabi-4.4.0 |-- darwin-x86_64 (drawin x86 64bit平台) |-- linux-x86 (linux x86平台) | `-- toolchain (工具链,我们应该主要用这个) + C: |$ M4 Z& q' ^ | |-- arm-eabi-4.2.1 | |-- arm-eabi-4.3.1 | |-- arm-eabi-4.4.0 | `-- i686-unknown-linux-gnu-4.2.1 (x86版编译器) % G; O T) S7 c& ? x' n |-- linux-x86_64 (linux x86 64bit平台) . z9 M |7 ~. Z! I% P! H$ U! ]* E |-- windows (windows平台) # q0 _# ]8 B$ g0 W' F: @3 n+ J+ G `-- windows-x86_64 (64bit windows平台) system 目录 (底层文件系统库、应用及组件——C语言) . ! V8 k5 J7 w) g4 H$ s |-- Bluetooth (蓝牙相关) 4 s" S, a' p _4 @9 ` |-- core (系统核心工具盒接口) ; P! g' F0 t# b | |-- adb (adb调试工具) ( N; c/ v- V7 ^# [9 y, \4 W% R | |-- cpio (cpio工具,创建img) % G* _9 V# b6 G5 t+ ~, S | |-- debuggerd (调试工具) | |-- fastboot (快速启动相关) ) K" ]3 u! u& j1 e | |-- include (系统接口头文件) | |-- init (init程序源代码) | |-- libacc (轻量级C编译器) ' W, Y( Q @9 e! @6 _$ |- V | |-- libctest (libc测试相关) ; t* ^" f% E" W7 L' V; f* z | |-- libcutils (libc工具) | |-- liblog (log库) | |-- libmincrypt (加密库) ) }. j9 ] o# @) Z5 @4 \. s2 R a | |-- libnetutils (网络工具库) | |-- libpixelflinger (图形处理库) | |-- libsysutils (系统工具库) $ Y: M1 ^+ | S, I- v0 ~* y: R | |-- libzipfile (zip库) 7 n5 K- k% [4 E# ? | |-- logcat (查看log工具) | |-- logwrapper (log封装工具) & g0 i( z6 \ {7 S( N5 \: Y | |-- mkbootimg (制作启动boot.img的工具盒脚本) | |-- netcfg (网络配置netcfg源码) | |-- nexus (google最新手机的代码) $ Q7 }. y1 G6 G0 O+ M0 b8 j | |-- rootdir (rootfs,包含一些etc下的脚本和配置) 8 s2 S1 J, |0 Q" ~+ c# k | |-- sh (shell代码) $ [# C0 N! O& h( J. ?1 N4 D | |-- toolbox (toolbox,类似busybox的工具集) & C" v9 }- I# y1 G4 Q | `-- vold (SD卡管理器) * ^/ ]- Q9 Q. O2 }) M |-- extras (额外工具) | |-- latencytop (a tool for software developers ,identifying system latency happen) + X$ a& T3 J) A+ C8 ?* o! Q | |-- libpagemap (pagemap库) 5 c% `, Z3 R: | | |-- librank (Java Library Ranking System库) | |-- procmem (pagemap相关) | |-- procrank (Java Library Ranking System相关) | |-- showmap (showmap工具) | |-- showslab (showslab工具) & Z6 I G8 i( I& q. ~! b' v | |-- sound (声音相关) | |-- su (su命令源码) | |-- tests (一些测试工具) | `-- timeinfo (时区相关) `-- wlan (无线相关) 9 W/ a2 L: L" o' `$ s7 A) T `-- ti (ti网卡相关工具及库) 1 U& Y; a+ G7 j- W: r" t2 k vendor 目录 (厂家定制内容) ! B' R7 a5 p! [ |-- aosp (android open source project) / c4 z2 P4 U0 {( B. R5 s* p4 } | `-- products (一些板级规则) |-- htc (HTC公司) | |-- common-open (通用部分) 1 P! e7 A& |* p6 `( @! A" _. x/ i | | `-- akmd (解压img用的工具) | |-- dream-open (G1开放部分) | |-- prebuilt-open (预编译开放部分) | `-- sapphire-open (sapphire这款型号开放内容) |-- pv-open (没东西) |-- qcom (里面基本是空的) 5 q4 B7 N. w* d* e1 ` `-- sample (google提供的样例) ; Y, X0 G: \0 ^& c- k0 _ |-- apps (应用) | |-- client (用户) | `-- upgrade (升级) 0 z$ C5 w& y) M, W3 ? |-- frameworks (框架) 7 {- ?' W: C; R | `-- PlatformLibrary (平台库) $ t& x, z; O/ U |-- products (产品) |-- sdk_addon (sdk添加部分) & O/ g+ F: Z X% g `-- skins (皮肤) 5 h; C. M! S1 n `-- WVGAMedDpi (WVGA适用的图片) |
下节分析android的启动过程,具体的博客请见:基于goldfish和android2.3.5学习之:开天辟地Android启动机制[一]
更多推荐
所有评论(0)