Android2.3.7源码结构分析

本文针对 Android 2.3.7 版本的源码结构进行了详细解读,包括 bionic C 库、dalvik JAVA 虚拟机、核心框架等关键组成部分,并对各个目录的主要功能进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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

下图为2.3.7_r1版本的根目录结构:
Makefilemakefile文件)
bionic
bionic CC运行时支持:libclibmlibdl、动态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语言)
`--vendor             (厂商定制代码)
主要工程及描述:
bionic 目录

LibcC库)
Libdldl是动态链接,提供访问动态链接库的功能)
Libmm是数学,提供数学计算相关功能) 
libstdc++(标准 C++实现库)
libthread_db(线程调试库,gdb相关)
linker(动态链接器)
bootable 目录

Bootloader(适合各种bootloader的通用代码,部分函数实现及一些汇编文件)
Diskinstallerandroid镜像打包器,x86可生产iso
Recovery(系统恢复相关)
build目录

core(核心编译规则)
libs(主机端库,有android “cp”功能替换)
target(目标机编译对象:模拟器等)
tools(编译中主机使用的工具及脚本)
dalvik目录

dalvikvmmain.c的目录)
dexdumpdex反汇编)
dexlistList all methods in all concrete classes in a DEX file.
dexopt(预验证与优化)
docs(文档)
dvz(和zygote相关的一个命令)
dxdx工具,将多个java转换为dex
hit(猜测是堆栈内实例相关操作的实线)
libdexdex的库)
libnativehelper(安卓本地帮助库)
tests(测试代码)
tools(工具) 
vm(虚拟机实现)
development 目录

Apps(一些核心应用程序)
build (编译脚本模板)
cmds(有个monkey工具)
data(配置数据)
docs(文档)
host(主机端USB驱动等)
ide(集成开发环境)
ndk(本地开发套件——c语言开发套件)
pdkPlug Development Kit
samples(示例)
scripts(脚本)
sdksdk配置)
sdk_overlay(输入法配置)
simulator (模拟器)
testrunner (测试用)
tools(一些工具)
tutorials(教程)
framework目录

base(核心框架库,多为javac++
ex(猜测是以前版本遗留的java类)
opt(可选部分:emoji工厂类)
hardware目录

broadcom(博通公司开源抽象层)
libhardware(硬件抽象层库)
libhardware_legacy(遗留的硬件抽象层库)
msm7k(高通7k处理器开源抽象层)
qcomqcom公司开源抽象层)
ril(无线接口层(Radio Interface Layer)
titi公司开源抽象层)
kernel目录
Linux内核,空
libcore目录

dalvikdalvik支持)
dom(文件对象模型相关)
expectations(异常相关)
icujni的国际化组件的unicode支持)
include(一些头文件)
jsonJavaScript对象符号相关)
junitjunit测试工具相关)
luni(猜测是一些java基本库的实现)
sqlite-jdbcsqlitejava数据库联接实现)
support(一些测试)
xmlxml支持)
prebuilt目录



各主机的预编译头文件
system目录

bluetooth(蓝牙相关)
core(系统核心工具)

extras


(扩展工具)
media(媒体相关)
netd(网络相关)
voldSD卡相关)
wlan(无线相关)
PS:.git文件夹内为repogit工具使用的文件,并非是安卓项目所属。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值