Android源码包含比较多的文件,比如Android系统的所有页面,里面的所有app程序,还包含了sdk,各种镜像img等等。完整Android源码基本在200多G左右,而且这还是比较初始的设计板,里面几个基本功能的app程序。
Android源码编译得到镜像文件img并不是很大,一般1-2G,把这几个镜像烧录到我们的Android设备上,Android设备就可以运行起来,就像我们正常使用的手机那样。
在线阅读Android源码:
https://cs.android.com/android/platform/superproject/
目录结构图:
Android源码目录结构如下:
- art:Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性
- bootable:Android程序启动导引,适合各种bootloader的通用代码,包括一个recovery目录
- bionic:基础C库源代码,Android改造的C/C++库
- 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平台测试程序
- sdk:Android的Java层sdk
- system:Android底层文件系统库、应用和组件
- toolchain:Android工具链文件
- tools:Android工具文件
- Android.bp:Android7.0开始代替Android.mk文件,它是告诉ndk将jni代码编译成动态库的一个脚本
- Makefile:全局Makefile文件,用来定义编译规则
Android开发可掌握的二级目录:
frameworks:
Android应用开发者最要关注的就是Framework层的源码。其中base目录中是应用框架层的主要核心代码,
framework-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模块
packages:
应用层位于整个Android系统的最上层,开发者开发的应用程序以及系统内置的应用程序都是在应用层。源码根目录中的packages目录对应着系统应用层。
它的目录结构:
- apps:核心应用程序
包括了著名的Contacts,Messaging,Launcher3(桌面),Music(音乐),QuickSearchBox(搜索),Settings(系统设置),SystemUI,Nfc,Gallery等系统应用。
apps层级目录:
- experimental: 第三方应用程序
- inputmethods:输入法目录
- providers:内容提供者目录
- screensavers:屏幕保护
- services:系统服务
- wallpapers:墙纸
参考:
https://segmentfault.com/a/1190000018510403
https://cs.android.com/android/platform/superproject/+/main:
https://juejin.cn/post/7119764025210044423