最近为了更深入的学习,由于遇到一本不错的书,所以开始写相关的读书笔记。同时开始练习相关的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阅读
第一章的主要 内容就到这里了,详细的内容还需要实践去操作,比如真正的挑选到感兴趣的部分去阅读源码。