[1] 历史
2003年Android公司成立,系统开发
2005年Android被google收购
2007年11月5日,google公司推动成立手机开发联盟(HAL)
2008年9月Android 1.0正式发布,HTC G1使用
[2] 如何研究学习系统?
1. 了解系统
(1) 架构
(2) 内核
(3) 文件系统
操作系统 = 内核 + 文件系统(数据和程序分类存储)
2. 使用系统
运行
3. 研究学习系统原理
(1) 获取源码
(2) 编译运行
(3) 编译原理
(4) 启动过程
(5) 定制系统
[3] 概述
理想的手机操作系统 = 应用通用 + 容易开发友好的应用 + 容易开发手机应用
应用层
---------------------------------------
如何让手机应用容易开发?
如何让友好的应用容易?
应用框架层
---------------------------------------
如何让应用通用?
vm
系统运行库 和 系统服务
---------------------------------------
如何让硬件更容易使用?
linux内核
---------------------------------------
hardware
[4] 应用层
1. Android 系统中所有应用程序的地位平等, 系统不绑定--开放
2. 应用层是应用程序开发工程师工作的层次
[5] 应用框架层(Application Framework)
如何让友好的应用容易?
1. Activity Manager
管理Activity之间的切换
2. Window Manager
管理窗口之间的切换
Activity = Window + 用户交互代码
3. Content Provider
程序<--------------Content Provider------------>程序
例:
phone 联系人
sms
4. View System
基本界面组件实现
5. Package Manager
管理应用程序包
6. Resource Manager
资源管理, 资源包含: 字符串、图片和布局
7. XMPP(Extensible Messging and Presence Protocol) Service
可扩展消息与表示协议, 四大即时通讯协议协议,基于xml脚本实现。
Google的Gtalk基于基于协议协议。
如何让手机应用容易开发?
1. Notification Manager
通知管理
2. telephone Manager
电话管理
3. Location Manager
定位管理,可以获得当前的位置信息
注意: 蓝颜色的部分用java语言实现
[6] 虚拟机
1. Core Libaries
Java语言核心库
2. Dalvik(冰岛小渔村的名字, 非常小,非美丽)Virtual Machine
(1) 每个应用程序运行在自己独立的虚拟机上, 每个虚拟机一个进程
(2) 基于寄存器(指令支持的操作数只能是寄存器和立即数)实现
(3) 执行.dex文件(针对内存做了优化)
(4) java类--->.class文件---dx(SDK)---->.dex文件
(5) 依赖于2.6以上版本的内核, 因为在2.6以上版本的内核中,加入一些虚拟机需要的机制:
线程和底层的内存管理机制
[7] 系统运行库
1. libc
标准C库
2. SSL(Secure Socket Layer 安全套接层)
在网络传输时, 加入对数据的加密, 有以下三个功能:
(1) 使用公钥证书对双端进行认证
(2) 通讯加密
(3) 数据完整性检查
3. SGL
2D图形加速引擎
4. Webkit
web浏览器引擎,支持了Android和一个内嵌web视图
5. FreeType
位图和适量字体图库(字库)
6. OpenGL | ES
3D图形加速引擎
7. SQLite
开源小型关系型数据库
8. Media Framework
基于PacketVideo Open Core实现, 支持很多的多媒体格式,音频(mp3, AAC和AMR)、视频(mpeg4、H.264 ...)
支持图片文件(jpg、png...)
9. Surface Manager
对显示子系统进行管理,用于应用程序的2D和3D图形融合
注意: 绿颜色部分用C/C++实现
[8] kernel
Binder 用于android系统中进程间通信
[9] 文件系统
1. /d
链接到/sys/kernel/debug
2. /data
用户数据
3. /dev
设备文件
4. /etc
链接到/system/etc
5. /mnt
外部文件系统的挂载点, 如: SDcard
6. /proc 和 /sys
挂载procfs和sysfs虚拟文件系统
7. /root
root用户的home目录
8. /sbin
基本调试工具和启动程序
9. /sdcard
链接到/mnt/sdcard目录
10. /system
* /system/app apk应用程序
* /system/preinstall
/system/pri-app
* /system/bin linux应用程序(常用工具)
* /system/etc 启动脚本和配置文件
* /system/fonts 字库
2003年Android公司成立,系统开发
2005年Android被google收购
2007年11月5日,google公司推动成立手机开发联盟(HAL)
2008年9月Android 1.0正式发布,HTC G1使用
[2] 如何研究学习系统?
1. 了解系统
(1) 架构
(2) 内核
(3) 文件系统
操作系统 = 内核 + 文件系统(数据和程序分类存储)
2. 使用系统
运行
3. 研究学习系统原理
(1) 获取源码
(2) 编译运行
(3) 编译原理
(4) 启动过程
(5) 定制系统
[3] 概述
理想的手机操作系统 = 应用通用 + 容易开发友好的应用 + 容易开发手机应用
应用层
---------------------------------------
如何让手机应用容易开发?
如何让友好的应用容易?
应用框架层
---------------------------------------
如何让应用通用?
vm
系统运行库 和 系统服务
---------------------------------------
如何让硬件更容易使用?
linux内核
---------------------------------------
hardware
[4] 应用层
1. Android 系统中所有应用程序的地位平等, 系统不绑定--开放
2. 应用层是应用程序开发工程师工作的层次
[5] 应用框架层(Application Framework)
如何让友好的应用容易?
1. Activity Manager
管理Activity之间的切换
2. Window Manager
管理窗口之间的切换
Activity = Window + 用户交互代码
3. Content Provider
程序<--------------Content Provider------------>程序
例:
phone 联系人
sms
4. View System
基本界面组件实现
5. Package Manager
管理应用程序包
6. Resource Manager
资源管理, 资源包含: 字符串、图片和布局
7. XMPP(Extensible Messging and Presence Protocol) Service
可扩展消息与表示协议, 四大即时通讯协议协议,基于xml脚本实现。
Google的Gtalk基于基于协议协议。
如何让手机应用容易开发?
1. Notification Manager
通知管理
2. telephone Manager
电话管理
3. Location Manager
定位管理,可以获得当前的位置信息
注意: 蓝颜色的部分用java语言实现
[6] 虚拟机
1. Core Libaries
Java语言核心库
2. Dalvik(冰岛小渔村的名字, 非常小,非美丽)Virtual Machine
(1) 每个应用程序运行在自己独立的虚拟机上, 每个虚拟机一个进程
(2) 基于寄存器(指令支持的操作数只能是寄存器和立即数)实现
(3) 执行.dex文件(针对内存做了优化)
(4) java类--->.class文件---dx(SDK)---->.dex文件
(5) 依赖于2.6以上版本的内核, 因为在2.6以上版本的内核中,加入一些虚拟机需要的机制:
线程和底层的内存管理机制
[7] 系统运行库
1. libc
标准C库
2. SSL(Secure Socket Layer 安全套接层)
在网络传输时, 加入对数据的加密, 有以下三个功能:
(1) 使用公钥证书对双端进行认证
(2) 通讯加密
(3) 数据完整性检查
3. SGL
2D图形加速引擎
4. Webkit
web浏览器引擎,支持了Android和一个内嵌web视图
5. FreeType
位图和适量字体图库(字库)
6. OpenGL | ES
3D图形加速引擎
7. SQLite
开源小型关系型数据库
8. Media Framework
基于PacketVideo Open Core实现, 支持很多的多媒体格式,音频(mp3, AAC和AMR)、视频(mpeg4、H.264 ...)
支持图片文件(jpg、png...)
9. Surface Manager
对显示子系统进行管理,用于应用程序的2D和3D图形融合
注意: 绿颜色部分用C/C++实现
[8] kernel
Binder 用于android系统中进程间通信
[9] 文件系统
1. /d
链接到/sys/kernel/debug
2. /data
用户数据
3. /dev
设备文件
4. /etc
链接到/system/etc
5. /mnt
外部文件系统的挂载点, 如: SDcard
6. /proc 和 /sys
挂载procfs和sysfs虚拟文件系统
7. /root
root用户的home目录
8. /sbin
基本调试工具和启动程序
9. /sdcard
链接到/mnt/sdcard目录
10. /system
* /system/app apk应用程序
* /system/preinstall
/system/pri-app
* /system/bin linux应用程序(常用工具)
* /system/etc 启动脚本和配置文件
* /system/fonts 字库