标签:
Android源码体积非常庞大,由Dalvik虚拟机、Linux内核、编译系统、框架代码、Android定制C库、测试套件、系统应用程序等部分组成,在编译Android源码之前,先掌握Android源码的组成。
在Android源码中,按照不同功能代码被放在不同的目录下:
| 目录 |
描述 |
| bionic |
针对Android系统定制的仿生标准C库、链接器等所在目录,Android系统并没有使用Linux的glibc库,bioinc C库针对嵌入式系统做了优化,添加了一些Android特定的函数API同时大大减少库的体积,也避免了LGPL版权的问题。 |
| bootable |
Android系统引导启动代码,用来引导系统、更新系统、恢复系统。 |
| build |
Android的编译系统目录,里面包含大量的Makefile,用来编译目标系统、Host主机开发环境等。 |
| cts |
兼容性测试工具目录。 |
| dalvik |
Dalvik虚拟机,Android系统得以运行的虚拟执行环境。 |
| development |
程序开发所需要的模板和工具。 |
| external |
Android系统使用的其它开源代码目录,如jpeg图片解码开源库、opencore开源代码等。 |
| frameworks |
框架层代码,frameworks/base目录下存放目标系统的框架库,frameworks/policies/base下存放应用程序框架代码。 |
| hardware |
HAL(Hardware Abstraction Layer)硬件抽象层代码。 |
| kernel |
Linux内核目录,默认下载的Android源码里没有,需单独下载。 |
| packages
|
Android系统级应用程序源码目录,如摄像应用、电话应用等。prebuilt |
| |
主机编译工具目录,如arm-linux-gcc交叉系统工具链等。 |
| sdk |
SDK及模拟器。 |
| system |
init进程、蓝牙、无线WIFI工具、uevent进程目录。 |
| devices |
厂商设备配置目录,针对不同设备,由不同的子目录来分别管理,用来裁剪实现不同设备上Android目标系统。 |
在external目录下存放着大量的外部开源代码:
| 外部开源项目 |
描述 |
| aes |
AES加密 |
| apache-http |
网页服务器 |
| asm |
|
| bluez |
蓝牙相关、协议栈 |
| ccache |
|
| clearsilver |
|
| dbus |
低延时、低开销、高可用性的IPC机制 |
| dhcpcd |
DHCP服务 |
| dropbear |
SSH2的server |
| eclipse |
|
| 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) |
| Flex |
|
| freetype |
字体库 |
| gdata |
google的无线数据相关 |
| diflib |
|
| googleclient |
google用户库 |
| icu4c |
ICU(International Component for Unicode)在C/C++下的版本 |
| iptables |
防火墙 |
| Jdiff |
generate a report describing the difference between two public Java APIs |
| jfreechart |
|
| jpeg |
jpeg库 |
| kxml2 |
|
| libffi |
libffi is a foreign function interface library. |
| libpcap |
网络数据包捕获函数 |
| libxml2 |
xml解析库 |
| make |
|
| netbeans-visual |
|
| netcat |
simple Unix utility which reads and writes dataacross network connections |
| netperf |
网络性能测量工具 |
| neven |
看代码和JNI相关 |
| opencore |
多媒体框架 |
| openssl |
SSL加密相关 |
| oprofile |
OProfile是Linux内核支持的一种性能分析机制 |
| ppp |
pppd拨号命令,好像还没有chat |
| protobuf |
a flexible, efficient, automated mechanism for serializing structured data |
| qemu |
arm模拟器 |
| safe-iop |
functions for performing safe integer operations |
| sdl |
|
| skia |
skia图形引擎 |
| sonivox |
sole MIDI solution for Google Android Mobile Phone Platform |
| sqlite |
数据库 |
| srec |
Nuance 公司提供的开源连续非特定人语音识别 |
| strace |
trace工具 |
| swing-worker |
|
| swt |
|
| tagsoup |
TagSoup是一个Java开发符合SAX的HTML解析器 |
| tcpdump |
抓TCP包的软件 |
| tinyxml |
TinyXml is a simple, small, C++ XML parser |
| toolchain |
|
| tremor |
I stream and file decoder provides an embeddable,integer-only library |
| webkit |
浏览器核心 |
| wpa_supplicant |
无线网卡管理 |
| yaffs2 |
yaffs文件系统 |
| zlib |
a general purpose data compression library |
在packages/app目录下存放着大量系统级应用程序,我们可以拿到这些应用程序代码分析、理解,编写出效率更高,性能更好的应用:
| 系统应用程序 |
描述 |
| AlarmClock |
闹钟 |
| Browser |
浏览器 |
| Calculator |
计算器 |
| Calendar |
日历 |
| Camera |
摄像头 |
| Contacts |
联系人 |
| |
邮件 |
| GoogleSearch |
Google搜索 |
| HTML Viewer |
浏览器附属界面,被浏览器应用调用,同时提供存储记录功能 |
| IM |
即时通讯,为手机提供信号发送、接收、通信的服务 |
| Launcher |
Android的桌面 |
| Mms |
彩信业务 |
| Music |
音乐播放器 |
| PackageInstaller |
应用程序安装、卸载器 |
| Phone |
电话应用 |
| Settings |
系统设置 |
| SoundRecorder |
录音机 |
| Stk |
短信接收和发送 |
| Sync |
同步数据 |
| Updater |
更新 |
| VoiceDialer |
语音识别通话 |
在package/providers目录下存放的是系统级内容提供器(Content Provider):
| 系统内容提供器 |
描述 |
| CalendarProvider |
日历提供器 |
| ContactsProvider |
联系人提供器 |
| DownloadProvider |
下载管理提供器 |
| DrmProvider |
DRM受保护数据存储服务,创建和更新数据库时调用 |
| GoogleContactsProvider |
谷歌联系人提供器 |
| GoogleSubscribedFeedsProvider |
Google同步功能 |
| ImProvider |
即时通讯提供器 |
| MediaProvider |
媒体提供器、提供存储数据 |
| SettingsProvider |
系统设置提供器 |
| SubscribedFeedsProvider |
|
| TelephonyProvider |
彩信提供器 |
标签:
原文地址:http://my.oschina.net/u/2433716/blog/490803