Android源码学习(一)系统源码初识
摘自公众号:Android源码学习
Android 9.0.0_r3版本的源码:
结构名称及说明:
名称 | 说明 |
Android.bp | Android7.0开始代替Android.mk文件,它是告诉ndk将jni代码编译成动态库的一个脚本 |
art/ | Android Runtime,ART运行环境,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性 |
bionic/ | bionic C库,基础C库源代码,Android改造的C/C++库 |
bootable/ | 启动引导相关代码,Android程序启动导引,适合各种bootloader的通用代码,包括一个recovery目录 |
bootstrap.bash | 脚本 |
build/ | 存放系统编译规则及generic等基础开发包配置 |
compatibility/ | Android兼容性计划 |
cts/ | Android兼容性测试套件标准 |
dalvik/ | dalvik JAVA虚拟机相关内容 |
developers/ | 开发者参考文档 |
development/ | 应用程序开发相关 |
device/ | 设备相关配置 |
external | android使用的一些开源的模组 |
frameworks/ | 核心框架——java及C++语言 |
hardware/ | 部分厂家开源的硬解适配层HAL代码 |
kernel/ | Linux Kernel,不过Android默认不提供,需要单独下载,只有一个tests目录 |
libcore/ | 核心库相关文件 |
libnativehelper/ | 动态库,实现JNI库的基础 |
Makefile | 全局Makefile文件,用来定义编译规则 |
packages/ | 应用程序包 |
pdk/ | Plug Development Kit 的缩写,本地开发套件 |
platform_testing/ | 平台测试 |
prebuilts/ | x86和arm架构下预编译的一些资源 |
sdk/ | sdk及模拟器 |
system/ | 底层文件系统库、应用及组件——C语言 |
test/ | Android Vendor测试框架 |
toolchain/ | 工具链文件 |
tools/ | 工具文件 |
- 应用层
位于整个Android系统的最上层,开发者开发的应用程序和系统级应用程序都位于此。packages目录对应着系统应用层。
上图简要说明如下:
名称 | 说明 |
apps/ | 核心应用程序 |
experimental/ | 第三方应用程序 |
inputmethods/ | 输入法目录 |
providers/ | 内容提供者目录 |
screensavers/ | 屏幕保护 |
services/ | 通信服务 |
wallpapers/ | 墙纸 |
应用程序框架层
是系统的核心部分,frameworks目录对应着应用程序框架层
上图简要说明如下:
名称 说明 av/ 多媒体框架 base/ Android源码的主要核心目录 compile/ 编译相关 data-binding/ 数据绑定 ex/ ex文件解析器 hardware/ 硬件适配接口 layoutlib/ 布局相关 minikin/ Android原生字体,连体字效果 ml/ 机器学习 multidex/ Multi-dex Loader,多dex加载器 native/ native实现 opt/ 一些软件 rs/ Render Script,可创建3D接口 support/ framework支持文件 wilhelm/ 基于Khronos的OpenSL ES/OpenMAX AL的audio/multimedia实现 av目录下
上图简要说明如下:
名称 | 说明 |
Android.bp | Android7.0开始代替Android.mk文件,它是告诉ndk将jni代码编译成动态库的一个脚本 |
camera/ | 多媒体的相机相关部分 |
CleanSpec.mk | 编译文件,定义每次编译前的特殊清理步骤,build/core/cleanbuild.mk 会执行这些清除步骤 |
cmds/ | 命令源码 |
drm/ | 数据保护 |
include/ | 头文件 |
media/ | 多媒体部分 |
MODULE_LICENSE_APACHE2 | 授权模块 |
NOTICE | 通知信息 |
OWNERS | 所有者信息说明 |
packages/ | 包含多媒体组件和所有者信息说明 |
services/ | 服务部分 |
soundtrigger/ | 语音识别架构 |
tools/ | 工具包 |
base目录下
上图简要说明如下:
Android.bp | 编译配置文件 |
Android.mk | 编译配置文件 |
apct-tests/ | 性能优化测试 |
api/ | java的api接口,修改了接口文件请及时更新此目录下的文件(make update-api) |
CleanSpec.mk | 编译文件,定义每次编译前的特殊清理步骤,build/core/cleanbuild.mk 会执行这些清除步骤 |
cmds/ | android系统启动时用到的commands,重要命令:am、a pp_proce等 |
config/ | 关于版权说明、隐藏API文档和预加载相关等配置 |
core/ | framework的核心框架组件 |
data/ | android下的资源(字体、声音、视频、软盘等) |
docs/ | 文档,android项目说明 |
drm/ | 实现权限管理,数字内容解密等模块的工作 |
graphics/ | 图像渲染模块 |
keystore/ | 秘钥库,和数据签名证书相关 |
libs/ | 库信息(界面、存储、USB) |
location/ | 地理位置相关库 |
lowpan/ | 低功耗无线网络 |
media/ | 多媒体相关库 |
MODULE_LICENSE_APACHE2 | 授权模块 |
native/ | 本地方法实现(传感器、输入、界面、窗体) |
nfc-extras/ | 近场通讯NFC相关 |
NOTICE | 通知信息 |
obex/ | 蓝牙传输 |
opengl/ | 图形API,2D和3D图形绘制 |
packages/ | 框架层的实现(界面、服务、存储),设置、TTS、VPN程序 |
pathmap.mk | 该文件定义了一个列表pathmap_INCL,列表中每项是"短名:路径"对。宏函数include-path-for将会使用这个列表,来通过短名获取相对于的路径, |
PREUPLOAD.cfg | 保存预上传设置 |
proto/ | 协议框架 |
rs/ | 资源框架 |
samples/ | 例子程序 |
sax/ | XML解析器 |
services/ | 各种服务程序 |
telecomm/ | Telecom通信框架 |
telephony/ | 电话通讯框架 |
test-legacy/ | 测试配置 |
test-mock/ | Mock测试 |
test-runner/ | 测试工具相关 |
tests/ | 测试相关 |
tools/ | 工具 |
vr/ | 虚拟现实相关 |
wifi | wifi无线网络 |
Android源码学习(一)系统源码初识相关推荐
- Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL
OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...
- 计算机毕业设计Java移动学习网站(系统+源码+mysql数据库+Lw文档)
计算机毕业设计Java移动学习网站(系统+源码+mysql数据库+Lw文档) 计算机毕业设计Java移动学习网站(系统+源码+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 开发语 ...
- 党建学习答题系统源码,开源免费版是如何搭建的呢?
提起党建学习以及党建答题活动,我相信有不少国企工作人员或公务员都很有感触,学习党建知识,偶尔组织相关的答题活动等,是每年必不可少的一项企业活动,而对于这么一个常见活动,找到一个靠谱的.合适的党建学习答 ...
- java计算机毕业设计疫苗药品批量扫码识别追溯系统源码+数据库+系统+lw文档+部署
java计算机毕业设计疫苗药品批量扫码识别追溯系统源码+数据库+系统+lw文档+部署 java计算机毕业设计疫苗药品批量扫码识别追溯系统源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...
- 集运系统,集运下单系统,国际物流集运系统,转运系统源码 集运系统源码
集运系统,集运下单系统,国际物流集运系统,转运系统源码 集运系统源码 系统简介 一.包裹管理 扫描入库 未入库包裹 已入库包裹 待认领包裹订单 已创建订单包裹 二.订单管理 全部订单 已付款 待付款 ...
- 收款码在线生成系统源码 无限制
截图 收款码在线生成系统源码 无限制 说明 之后用过两个收款码生成系统,一个是收款啦,还有一个是优启梦收款码,前面一个用起来挺方便的,就是二维码识别得比较慢,自己想改接口但是没学过php也做不了什么. ...
- PHP手机版源码下载分期系统源码Thinkphp内核开发集成支付,短信功能,征信对接
PHP手机版源码下载分期系统源码Thinkphp内核开发集成支付,短信功能,征信对接下载链接:https://pan.baidu.com/s/17THZSi8MNV4n7oUZoYRyRg 提取码:8 ...
- java互联网医院源码 智慧医院源码 图文问诊系统源码
互联网医院系统源码 智慧医院系统源码 在线问诊.复诊购药APP 使用技术:Java + springboot + mysql + 原生APP 一.系统特点: 1.在线问诊 图文问诊.视频问诊.语音 ...
- 医院检验LIS系统源码 医院检验系统源码
医院检验LIS系统源码 医院检验系统源码 医院检验源码系统功能 LIS系统方案的实施,最主要的目的是提高检验的效率.效益.包括降低运行成本,人力资源成本,控制费用漏洞. 1. 检验工作站 是LIS最大 ...
- 医院排队叫号分诊管理系统源码,医院系统源码
医院排队叫号分诊管理系统源码,医院系统源码 功能介绍 1.1 分诊管理端 1.1.1 科室管理 登录分诊管理客户端后,在主界面的菜单中点击[科室管理],进入科室管理界面. 输入条件点击[查询]按钮,可 ...
最新文章
- python括号配对问题_使用Python的栈实现括号匹配算法
- 坦克世界服务器未响应怎么解决,华硕笔记本老是程序未响应怎么处理
- 做 AI 大咖在顶级单位之间随兴漂移,好开心!
- Sublime Text 2/3 配置文件详解
- UI自动化新思路-基于RUNTIME的自动化测试设想
- 调制的缺点_电光调制与声光调制原理和应用领域
- JS获取DOM元素的八种方法
- 使用Hibernate注解Annotations进行对象映射的异常处理
- 《数据分析实战 基于EXCEL和SPSS系列工具的实践》一3.2 用“逐步推进法”推测需要的数据...
- MySQL高级知识(六)——索引优化
- 机房收费系统重构版:照葫芦画瓢
- GJB-150湿热试验,国军标150试验机构
- html加载gif动画效果,html – 使用CSS动画加载图像VS使用GIF图像加载
- 如何在Ubuntu 20.04上安装和使用Docker
- 智慧地产-售楼中心 3D 沙盘可视化
- 2017-12-12
- (Error -6311) PRSC module failed to write to a register. 问题的探讨
- uva12325 暴力枚举
- ettercap局域网内DNS欺骗(隔壁的哥们轻一点 ...)
- JAVA计算机毕业设计星星电影购票网站Mybatis+源码+数据库+lw文档+系统+调试部署
热门文章
- 爬虫(二)-创建项目应用
- SNF软件开发机器人2018最新更新内容
- codewars python Regex validate PIN code
- javaweb-文件的上传下载
- POJ 2942Knights of the Round Table(二分图判定+双连通分量)
- 如何:从代码创建 UML 类图(ZZ)
- Android网络多线程断点续传下载
- GdiPlus[45]: IGPGraphics (四) 关于呈现质量与合成模式
- 将文件夹下所有csv文件转换成所有txt
- 器械传递的方法_天津304不锈钢传递窗报价_碧海云天