Android2.3.7源码结构分析

摘要:
在分析或定制Andorid系统时,我们通常需要花费大量时间在众多文件中查找需要注意的部分。为了缓解这项枯燥且不可避免的工作,本文简单分析了2.3.7版本的源代码结构。希望对刚加入安卓大军的朋友有所帮助。

Andorid系统进行分析或者系统功能定制的时候,我们经常需要在众多文件中花费大量时间定位所需关注的部分。为了减轻这部分枯燥而不可避免的工作,本文对2.3.7版本的源码结构进行了简单分析。希望对刚加入安卓大军的朋友们有所帮助。

下图为2.3.7_r1版本的根目录结构:

Android2.3.7源码结构分析第1张

Makefile (makefile文件)
bionic (bionic C,C运行时支持:libc、libm、libdl、动态linker)
bootable (启动引导相关代码)
build (存放系统编译规则及generic等基础开发包配置)
cts (Android兼容性测试套件标准)
dalvik (dalvik JAVA虚拟机)
development (应用程序开发相关)
device (厂商设备的编译变量等)
external (android使用的一些开源的模组)
frameworks (核心框架——javaC++语言)
hardware  (主要是硬件适配层HAL代码)
libcore (核心库,支持dalvik)
ndk (本地代码的开发工具,用来包含应用程序的本地代码)
out (编译完成后的代码输出与此目录)
packages  (应用程序包)
prebuilt  (x86arm架构下预编译的一些资源)
sdk  (sdk及模拟器)
system (文件系统库、应用及组件——C语言)
主要工程及描述:

bionic 目录

Android2.3.7源码结构分析第2张

Libc (C库)

Libdl (dl是动态链接,提供访问动态链接库的功能)

Libm (m是数学,提供数学计算相关功能) 

libstdc++ (标准 C++实现库)

libthread_db (线程调试库,gdb相关)

linker (动态链接器)

bootable 目录

Android2.3.7源码结构分析第3张

Bootloader (适合各种bootloader的通用代码,部分函数实现及一些汇编文件)

Diskinstaller (android镜像打包器,x86可生产iso

Recovery (系统恢复相关)

build目录

Android2.3.7源码结构分析第4张

core (核心编译规则)

libs (主机端库,有android “cp”功能替换)

target (目标机编译对象:模拟器等)

tools (编译中主机使用的工具及脚本)

dalvik目录

Android2.3.7源码结构分析第5张

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 (猜测是堆栈内实例相关操作的实线)

libdex (dex的库)

libnativehelper (安卓本地帮助库)

tests (测试代码)

tools (工具) 

vm (虚拟机实现)

development 目录

Android2.3.7源码结构分析第6张

Apps (一些核心应用程序)

build  (编译脚本模板)

cmds (有个monkey工具)

data (配置数据)

docs (文档)

host (主机端USB驱动等)

ide (集成开发环境)

ndk (本地开发套件——c语言开发套件)

pdk (Plug Development Kit

samples (示例)

scripts (脚本)

sdk (sdk配置)

sdk_overlay (输入法配置)

simulator  (模拟器)

testrunner  (测试用)

tools (一些工具)

tutorials (教程)

framework目录

Android2.3.7源码结构分析第7张

base (核心框架库,多为java或c++)

ex (猜测是以前版本遗留的java类)

opt (可选部分:emoji工厂类)

hardware目录

Android2.3.7源码结构分析第8张

broadcom (博通公司开源抽象层)

libhardware (硬件抽象层库)

libhardware_legacy(遗留的硬件抽象层库)

msm7k (高通7k处理器开源抽象层)

qcom (qcom公司开源抽象层)

ril (无线接口层(Radio Interface Layer))

ti (ti公司开源抽象层)

kernel目录

Linux内核,空

libcore目录

Android2.3.7源码结构分析第9张

dalvik (dalvik支持)

dom (文件对象模型相关)

expectations (异常相关)

icu (jni的国际化组件的unicode支持)

include (一些头文件)

json (JavaScript对象符号相关)

junit (junit测试工具相关)

luni (猜测是一些java基本库的实现)

sqlite-jdbc (sqlite的java数据库联接实现)

support (一些测试)

xml (xml支持)

prebuilt目录


Android2.3.7源码结构分析第10张

各主机的预编译头文件

system目录

Android2.3.7源码结构分析第11张

bluetooth (蓝牙相关)

core (系统核心工具)

(扩展工具)

media (媒体相关)

netd (网络相关)

vold (SD卡相关)

wlan (无线相关)

PS:.git文件夹内为repogit工具使用的文件,并非是安卓项目所属。


参考资料:

http://wenku.baidu.com/view/7eb0cff69e314332396893c7.html

http://wenku.baidu.com/view/9e9e9f8b680203d8ce2f247e.html?from=rec&pos=0&weight=212&lastweight=108&count=5

免责声明:文章转载自《Android2.3.7源码结构分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇本福特定律Cortex-A15架构解析:它为什么这么强(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

爬虫发起抓取被服务器拒绝访问返回403禁止访问解决方案

目前,许多网站的API接口返回的http代码返回代码为403,表示禁止访问。如果您也遇到这种情况,请不要急于首先修改网站的相关参数,即高级api的网站。使用浏览器访问。如果浏览器访问api接口,它可以成功。表示已设置权限。接口可能已被修改或无效,此时无法访问。调用此接口时,将捕获异常中的responseBody。数据很可能在该区域。这就是作者遇到的问题。直接...

Jboss

同时,为了扩大JBoss的企业市场,JBoss已经签署了许多渠道合作伙伴。2004年6月,JBoss宣布JBoss应用服务器已通过Sun公司的J2EE认证。这是JBoss应用服务器历史上最重要的里程碑。JBossAOP 1.0于2004年10月发布。这也证实了JBoss是一家创新型公司。JBoss应用服务器5.0于2008年12月6日正式发布。新版本的应用服...

用arduino做一个智能垃圾桶

这些天我几乎很忙。我有一些时间继续打扰我的arduino。上一次我从TB购买arduino套件时,有一个人体热能感应模块,用于感应人体接近信号。今天我们用这个做一个简单的智能垃圾桶。要实现的功能是:当有人靠近时,垃圾可以自动打开盖子,当人离开时,盖子可以自动关闭。1、 所需材料和工具:1 Arduino SCM我使用Arduino Nano 2人体热能传感模...

四、使用ADB命令清除缓存

1、 ADBShell应用程序查看目录结构:adbshells查看系统当前日期:adbselldate查看系统CPU使用情况:adbsHELcat/proc/cpuinfo查看系统内存使用情况:adbshellcat/proc/meminfo显示所有应用程序:adbshelpmlistpackages显示系统自带的应用程序:adshellpmlistpack...

sqlite3 数据类型 批量插入

SQLite3采用动态数据类型。存储值的数据类型与值本身相关,而不是由其字段类型决定。SQLite3的动态数据类型可以向后兼容其他数据库常用的静态类型,这意味着在使用静态数据类型的数据库中使用的数据表也可以在SQLite3中使用。在SQLite2数据库中,除了声明为主键的INTEGER列外,任何列都可以存储属于任何存储类型的值。...

Maven settings.xml配置详解

让我们来谈谈设置。对于Maven,xml相当于全局配置,用于所有项目。maven2-xml中有两个设置,作为全局配置位于maven2的安装目录conf下。对于团队设置,一致的定义是关键,因此maven2/conf Xml下面的设置是团队的通用配置文件。当然,每个成员都需要特殊的用户定义设置,例如用户信息,其他设置也是如此。xml用作本地配置。默认位置为:${...