Android系统源码⽬录解析
前⾔
在之前的⽂章中介绍了Android系统源码的下载,这篇⽂章简单介绍⼀下源码结构,并结合Android系统结构,熟悉⼀下源码⼯程。
源码结构
各个版本的源码⽬录结构基本上是⼤同⼩异,编译后的⽬录中会多⼀个out⽂件夹,⾥⾯⽤来存储编译后的⽂件。这⾥我下载的源码版本是9.0的,如果你不知道你下载的源码版本的话,可以打开build->core->version_defaults.md中到PLATFORM_SDK_VERSION字
段,PLATFORM_SDK_VERSION:=28就是Android源码的版本。Android源码⽬录结构如下:
art:Android Runtime,⼀种App运⾏模式,区别于传统的Dalvik虚拟机,旨在提⾼Android系统的流畅性
bionic:基础C库源代码,Android改造的C/C++库
bootable:Android程序启动导引,适合各种bootloader的通⽤代码,包括⼀个recovery⽬录
build:存放系统编译规则及generic等基础开发包配置
compatibility:Android兼容性计划
cts: Android兼容性测试套件标准
dalvik:Android Dalvik虚拟机相关内容
developers:Android开发者参考⽂档
development: Android应⽤开发基础设施相关
device:Android⽀持的各种设备及相关配置
external:Android中使⽤的外部开源库
frameworks:应⽤程序框架,Android系统核⼼部分,由Java和C++编写
hardware:硬件适配接⼝
kernel:Linux Kernel,不过Android默认不提供,需要单独下载,只有⼀个tests⽬录
libcore:Android Java核⼼类库
libnativehelper:Android动态库,实现JNI库的基础
packages:应⽤程序包
pdk:Plug Development Kit 的缩写,本地开发套件
platform_testing:Android平台测试程序
prebuilts:x86和arm架构下预编译的⼀些资源
sdk:Android的Java层sdk
system:Android底层⽂件系统库、应⽤和组件
test:Android Vendor测试框架
toolchain:Android⼯具链⽂件
tools:Android⼯具⽂件
Android.bp:Android7.0开始代替Android.mk⽂件,它是告诉ndk将jni代码编译成动态库的⼀个脚本
Makefile:全局Makefile⽂件,⽤来定义编译规则
Android系统结构与源码的对应关系
在之前的⽂章中介绍了⼀下Android系统架构,对于Android系统架构每⼀层,Android源码结构中都有相关⽬录与之对应。下图展⽰了在Android源码⼀级⽬录中,各框架层和部分⽬录的对应关系:
系统架构
对应关系
对于Android开发者⽽⾔,学习源码有助于帮助我们更好的理解Android,为此我们⼀般学习Framework层的代码。接下来介绍⼀下应⽤层、应⽤框架层相关⽬录结构。
应⽤层
应⽤层位于整个Android系统的最上层,开发者开发的应⽤程序以及系统内置的应⽤程序都是在应⽤层。其中⽬录结构如下:apps:核⼼应⽤程序
inputmethods:输⼊法⽬录
providers:内容提供者⽬录
screensavers:屏幕保护
services:通信服务
wallpapers:墙纸
应⽤框架层
应⽤框架层是系统的核⼼部分,⼀⽅⾯向上提供接⼝给应⽤层调⽤,另⼀⽅⾯向下与C/C++程序库以及硬件抽象层等进⾏衔接。其中⽬录结构如下:
av:多媒体框架
base:Android源码的主要核⼼⽬录
compile:编译相关
ex:⽂件解析器
x86架构和arm架构区别hardware:硬件适配接⼝
layoutlib:布局相关
minikin:Android原⽣字体,连体字效果
ml:机器学习
multidex:多dex加载器
native:native实现
opt:⼀些软件
rs:Render Script,可创建3D接⼝
support:framework⽀持⽂件
wilhelm:基于Khronos的OpenSL ES/OpenMAX AL的audio/multimedia实现
其中base⽬录中是应⽤框架层的主要核⼼代码,⽬录结构如下:
apct-tests:性能优化测试
api:android应⽤框架层声明类、属性和资源
cmds:android系统启动时⽤到的commands
core:framework的核⼼框架组件
data:android下的资源(字体、声⾳、视频、软盘等)
docs:android项⽬说明
drm:实现权限管理,数字内容解密等模块的⼯作
graphics:图像渲染模块
keystore:秘钥库
libs:库信息(界⾯、存储、USB)
location:位置信息
media:⼿机媒体管理(⾳频、视频等)
native:本地⽅法实现(传感器、输⼊、界⾯、窗体)
nfc-extras:近场通讯
obex:蓝⽛
opengl:2D和3D图形绘制
packages:框架层的实现(界⾯、服务、存储) proto:协议框架
rs:资源框架
samples:例⼦程序
sax:xml解析器
services:各种服务程序
telecomm:telecomm通信框架telephony:电话通讯框架
tests:各种测试
vr:虚拟现实相关
wifi:wifi模块
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论