获得Android源码后,我们来分析源码结构。源码的全部工程分为如下三个部分。
①Core Project:核心工程部分,这是建立Android系统的基础,保存在根目录的各个文件夹中。
②External Project:扩展工程部分,可以使其他开源项目具有扩展功能,保存在external文件夹中。
③Package:包部分,提供了Android的应用程序,内容提供者,输入法和服务,保存在package文件夹中。
在获取的Android4.3源码目录中,包含了原始Android的目标机代码,主机编译工具和仿真环境。解压缩下载的Android4.3源码包后,第一级别目录结构的具体说明如下表所示:
根目录 | 描述 |
abi | abi相关代码,应用程序二进制接口 |
bionic | bionic C库 |
bootable | 启动引导相关代码 |
build | 存放系统编译规则及generic等基础开发配置包 |
cts | Android兼容性测试套件标准 |
dalvik | dalvik Java虚拟机 |
development | 应用程序开发相关代码 |
device | 设备相关代码 |
docs | 介绍开源的相关文档 |
external | Android使用的一些开源的模组 |
frameworks | 核心框架——Java及C++语言,是Android应用程序的框架 |
gdk | 即时通信模块 |
hardware | 主要是硬件适配层HAL代码 |
kernel | Linux的内核文件 |
libcore | 核心库相关 |
libnativehelper | 是Support functions for Android's class libraries的别名,表示动态库,是实现JNI库的基础 |
ndk | ndk相关代码。Android NDK(Android Native Development Kit)是一系列的开发工具,允许程序开发人员在Android应用程序中嵌入C/C++语言编写的非托管代码 |
out | 编译完成后的代码输出在此目录 |
packages | 应用程序包 |
pdk | Plug Development Kit的缩写,是本地开发套件 |
prebuilts | x86和ARM架构下预编译的一些资源 |
sdk | SDK及模拟器 |
system | 文件系统和应用及组件,是用C语言实现的 |
tools | 工具文件夹 |
vendor | 厂商定制代码 |
Makefile | 全局的Makefile |
文件夹目录如下:
1.Android源码的目录结构
当下载好Android源码后,可以看到,第一级目录有18个文件夹和一个Makefile文件,如果是编译后的源码目录,会增加一个out文件夹,用来存放编译产生的文件,下面具体来分析一下这些目录各自的作用:
|——abi //应用程序的二进制接口
|——bionic //Android基础C库的源码
|——bootable //系统启动器的源码
|——build //编译和配置系统所需要的配置文件和脚本文件
|——cts //Android兼容性测试标准
|——dalvik //Android虚拟机源码
|——development //程序开发的模板和工具
|——device //设备相关代码
|——docs //开源的相关文档
|——external //Android使用的第三方开源库的源码
|——frameworks //应用程序框架源码
|——gdk //即时通信模块
|——hardware //硬件抽象层源码
|——libcore //相关核心库的代码
|——libnativehelper //动态库
|——ndk //NDK开发环境
|——packages //应用程序包
|——pdk //本地开发套件
|——prebuilt //x86和ARM架构下预编译的一些资源
|——sdk //SDK和模拟器相关代码
|——system //文件系统,应用和组件
|——Makefile //系统编译脚本
通过上面对源码根目录中的每个文件夹的介绍,可以看出源码是按照功能进行分类的,整个Android源码分为系统代码,工具,文档,开发环境,虚拟机,配置脚本和编译脚本等类别。
2.应用程序
在Android源码中,应用程序部分的功能是实现UI界面,开发人员基于SDK开发的APK包便属于应用程序层。应用程序层在Android系统中处于最顶层,Android 4.3源码结构中的packages目录用来实现系统的应用程序