最近为了更深入的学习,由于遇到一本不错的书,所以开始写相关的读书笔记。同时开始练习相关的Markdwon写法。
1Android 系统机构
1. 应用层
2. 应用框架层(Java Framework)
提供的一些常用的API
| 名称 | 功能描述 |
|---|---|
| Activity Manager(活动管理器) | 管理各个应用程序生命周期以及通常的导航回退功能 |
| Location Manager(位置管理器) | 提供地理位置以及定位功能服务 |
| Package Manager(包管理器) | 管理所有安装在Android系统中的应用程序 |
| Notification Manager(通知管理器) | 使得应用程序可以在状态栏中显示自定义的提示信息 |
| Resource Manager(资源管理器) | 提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等 |
| Telephony Manager(电话管理器) | 管理所有的移动设备功能 |
| Window Manager(窗口管理器) | 管理所有开启的窗口程序 |
| Content Providers(内容提供器) | 使得不同应用程序之间可以共享数据 |
| View System(视图系统) | 构建应用程序的基本组件 |
3. 系统运行库层(Native)
1. C/C++程序库
| 名称 | 功能描述 |
|---|---|
| OpenGL ES | 3D绘图函数库 |
| Libc 从BSD | 继承来的标准C系统函数库,专门为基于嵌入式Linux的设备定制 |
| Media Framework | 多媒体库,支持多种常用的音频、视频格式录制和回放。 |
| SQLite | 轻型的关系型数据库引擎 |
| SGL | 底层的2D图形渲染引擎 |
| SSL | 安全套接层,是为网络通信提供安全及数据完整性的一种安全协议 |
| FreeType | 可移植的字体引擎,它提供统一的接口来访问多种字体格式文件 |
2. Android运行时库
运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。DVM和ART相比进步的地方: 在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码。
3. 硬件抽象层(HAL)
通俗来讲,就是将控制硬件的动作放在硬件抽象层中。
4. Linux内核层
2.Android系统源码目录
如果没有下载的源码,在线查看推荐http://androidxref.com.查询搜索还是很快。
1.整体结构
| Android源码根目录 | 描述 |
|---|---|
| abi | 应用程序二进制接口 |
| art | 全新的ART运行环境 |
| bionic | 系统C库 |
| bootable | 启动引导相关代码 |
| build | 存放系统编译规则及generic等基础开发包配置 |
| cts | Android兼容性测试套件标准 |
| dalvik | dalvik虚拟机 |
| developers | 开发者目录 |
| development | 应用程序开发相关 |
| device | 设备相关配置 |
| docs | 参考文档目录 |
| external | 开源模组相关文件 |
| frameworks | 应用程序框架,Android系统核心部分,由Java和C++编写 |
| hardware | 主要是硬件抽象层的代码 |
| libcore | 核心库相关文件 |
| libnativehelper | 动态库,实现JNI库的基础 |
| ndk | NDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码 |
| out | 编译完成后代码输出在此目录 |
| packages | 应用程序包 |
| pdk | Plug Development Kit 的缩写,本地开发套件 |
| platform_testing | 平台测试 |
| prebuilts | x86和arm架构下预编译的一些资源 |
| sdk | sdk和模拟器 |
| system | 底层文件系统库、应用和组件 |
| toolchain | 工具链文件 |
| tools | 工具文件 |
| Makefile | 全局Makefile文件,用来定义编译规则 |
2.应用层部分
| packages目录 | 描述 |
|---|---|
| apps | 核心应用程序 |
| experimental | 第三方应用程序 |
| inputmethods | 输入法目录 |
| providers | 内容提供者目录 |
| screensavers | 屏幕保护 |
| services | 通信服务 |
| wallpapers | 墙纸 |
3.应用框架层部分
/frameworks/base目录结构
| /frameworks/base目录 | 描述 |
|---|---|
| api | 定义API |
| cmds | 重要命令:am、app_proce等 |
| core | 核心库 |
| data | 字体和声音等数据文件 |
| docs | 文档 |
| graphics | 图形图像相关 |
| include | 头文件 |
| keystore | 和数据签名证书相关 |
| libs | 库 |
| location | 地理位置相关库 |
| media | 多媒体相关库 |
| native | 本地库 |
| nfc-extras | NFC相关 |
| obex | 蓝牙传输 |
| opengl | 2D/3D 图形API |
| packages | 设置、TTS、VPN程序 |
| sax | XML解析器 |
| services | 系统服务 |
| telephony | 电话通讯管理 |
| test-runner | 测试工具相关 |
| tests | 测试相关 |
| tools | 工具 |
| wifi | WiFI无线网络 |
4.C/C++程序库部分
| 目录位置 | 描述 |
|---|---|
| bionic/ | Google开发的系统C库,以BSD许可形式开源。 |
| /frameworks/av/media | 系统媒体库 |
| /frameworks/native/opengl | 第三方图形渲染库 |
| /frameworks/native/services/surfaceflinger | 图形显示库,主要负责图形的渲染、叠加和绘制等功能 |
| external/sqlite | 轻量型关系数据库SQLite的C++实现 |
3.Android源码阅读
1.在线阅读
推荐http://androidxref.com. 查询速度相对可以
2.使用Source Insight阅读
第一章的主要 内容就到这里了,详细的内容还需要实践去操作,比如真正的挑选到感兴趣的部分去阅读源码。
来源:CSDN
作者:坚强的绿叶
链接:https://blog.csdn.net/qq_28334473/article/details/103483332