Android2.3.7源码结构分析

摘要:
对Andorid系统进行分析或者系统功能定制的时候,我们经常需要在众多文件中花费大量时间定位所需关注的部分。为了减轻这部分枯燥而不可避免的工作,本文对2.3.7版本的源码结构进行了简单分析。希望对刚加入安卓大军的朋友们有所帮助。下图为2.3.7_r1版本的根目录结构:Makefile (makefile文件)  bionic (bionic C库,C运行时支持:libc、libm、libdl、动态linker)  bootable (启动引导相关代码)  build (存放系统编译规则

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工具使用的文件,并非是安卓项目所属。

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

上篇一个简短的yahoo YUI介绍PHP之Smarty模板引擎下篇

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

相关文章

安卓界面组件单选复选按框

    安卓界面UI为开发者提供了单选复选框,单选框和复选框继承了安卓的普通按钮,所以他们可以直接使用普通按钮的xml基本属性。他们与普通按钮区别在于提供了可以选中的功能,同时二者之间的区别是:单选按钮在按钮组中,当用户点击选择以后,这个按钮组就必须有一个被选中,只能改选,无法撤销(所以单独的一个单选框功能上很尴尬,点击以后状态不能再更改,很僵硬);复选框...

二维码(android)

我们都知道一般的二微码都是以不同形式显示有的是登入,有的是网页,其实二维码只是一个字符串。到这里我们就有一个疑问那二维码是这样判断是网站或者是登入功能的呢? 其实这些判断部分,二维码生成器早就给你完成了,我们只需导入一个core-3.2.1.jar包就行。那接下来我们来做一个简单的小案例,进一步了解二维码。 一、新建项目 1、我们建一个名为"weima"的...

安卓Design包之CoordinatorLayout配合AppBarLayout,ToolBar,TabLaout的使用

转载:  CoordinatorLayout配合AppBarLayout,Toolbar和TabLayout的使用控件的简单介绍: AppBarLayout:它是继承LinerLayout实现的一个ViewGroup容器组件,是为了Material Design而设计的App Bar,支持手势滑动操作。 默认的AppBarLayout是垂直方向的,它的作用...

Android中Gallery显示手机中的图片

在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。 常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:   1 private Integer[] pictures = {  2         R.drawable.icon1,  3         R.drawable.icon2...

android中的资源访问

一.android中的资源是在代码中使用的外部文件。图片,音频,动画和字符串等叫做android中的资源文件。 二.Android工程 资源类型布局表    与src源文件夹并列的两个文件夹assets和res用来保存资源文件。      1.assets文件夹中放原声文件如MP3文件,通过AssetManager类以二进制流的形式访问      2.re...

在Android手机或者平板上直接调试运行APK程序

今天晚上有个同学问我,说AVD运行android程序太慢了,有没有更好的方法呢?? 于是我就推荐他可以用android系统的手机或者平板来直接调试运行android程序,下面让我来简单的介绍怎么用。 参考文章:http://www.cnblogs.com/plwang1990/archive/2011/07/04/2097757.html、 http://...