AOSP系列—阅读源码并熟悉AOSP⽬录结构
今⽇名⾔
再如何不可思议的事情,⼀旦做的次数多了,便会习惯直⾄⿇⽊甚⾄开始乐在其中。 --猫腻 《将夜》
⽂章⽬录
Android做的久了,有些东西⾃然⽽然就要了解 ⼀些。对于Android系统源码来说,我们可能不需要改动它,但读懂它还是有必要的。这⾥先放上⼏个查看源码的地址
这个地址是阿⾥云的,感觉起来会⽐较快,⽽且已经更新到10.0了
这个有时⽐较慢,⽬前为⽌只更新到9.0
下⾯的分析基于系统
整个⽬录如下所⽰:
art:Android Runtime,⼀种App运⾏模式,区别于传统的Dalvik虚拟机,旨在提⾼Android系统的流畅性
bionic:基础C库源代码,Android改造的C/C++库
bootable:Android程序启动导引,适合各种bootloader的通⽤代码,包括⼀个recovery⽬录
build:存放系统编译规则及generic等基础开发包配置
cts: Android兼容性测试套件标准
dalvik:Android Dalvik虚拟机相关内容
developers:Android开发者参考⽂档x86架构和arm架构区别
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⼯具⽂件
⽬录解析
1. build
存放系统编译规则及generic等基础开发包配置,我们如果需要进⾏系统开发或者只是想改动系统源码然后编译⼀下系统,是需要对这块了解的。⽬录如下:
简单介绍如下:
⽬录名介绍
blueprint输⼊为.bp⽂件。输出为.ninja⽂件
core核⼼的编译规则makefile
kati kati is an experimental GNU make clone
make以前的⽼的make系统
soong新的Build系统
target AOSP⾃带的Target(模拟器)的⼀些makefile
tools编译中使⽤的shell及python写的⼯具脚本
build/envsetup.sh编译初始化脚本
Android.bp:Android7.0开始代替Android.mk⽂件,它是告诉ndk将jni代码编译成动态库的⼀个脚本
Makefile:全局Makefile⽂件,⽤来定义编译规则
2. framework
Android核⼼应⽤都在这个framework中,我们经常说的framework层的开发就是基于这块,千万别觉得⾼⼤上,其实和我们平时写程序差不多,我们常说的分析系统源码,其实也只是分析到这⼀层⽽已。我们先看下这个⽬录下有啥:
简单介绍如下
⽬录名介绍
framework/av/多媒体相关的native层源码⽬录
framework/base/⼀些基础库代码,各种解析类、⼯具类都在这个⾥⾯
framework/compile/编译相关的内容
framework/ex/ex⽂件解析器
⽬录名介绍
framework/minikin/Android原⽣字体
framework/ml/机器学习
framework/multidex/multi dex Loader
framework/native/power、surface、input、binder等服务的native层实现源码⽬录framework/opt/⼀些基础软件,如:⽇历、⽹络、蓝⽛
framework/rs/Render Script 可创建3D接⼝framework/wilhelm/OpenSL ES/OpenMAX AL的audio
**
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论