Transcript Android OS
Android OS
主讲:燕山大学信息学院
申利民教授
赵逢达副教授
主要内容
Android概述
Android特性
Android架构分析
Android组件
13 April 2015
2
主要内容
Android概述
Android特性
Android架构分析
Android组件
13 April 2015
3
Android概述
• Android 手机操作系统是2007年11月5日由美
国Google公司基于Linux整合开发的嵌入式系
统,后开源并由开放手机联盟Open Handset
Alliance)开发
• 在全世界范围内,Moto、HTC(多普达)、
联想、三星等众多公司都已经推出Android手
机产品和上网本产品,而且有越来越多加速
上升的趋势
13 April 2015
4
开放手机联盟
• Open Handset Alliance
• 2007年11月5日Google宣布组建的一个全球性
的联盟组织支持Google可能发布的手机操作
系统或者应用软件,共同开发名为Android的
开放源代码的移动系统
• 34家IT巨头联合——芯片制造商、手机制造
商、移动运营商以、软件供应商、通讯软件
商
• 2009年5月18联通加盟,成员数达到48个
13 April 2015
5
开放手机联盟
13 April 2015
6
Android版本
Android 4.0
Ice cream Sandwich
13 April 2015
7
Android版本
BASE
Oct. 2008
The original, first, version of Android.
BASE_1_1
Feb. 2009
First Android update, officially called 1.1.
CUPCAKE
May 2009
Android 1.5.
CUR_DEVEL
OPMENT
HTC G1
Magic version number for a current development build,
which has not yet turned into an official release.
DONUT
Sep. 2009
Android 1.6.
HTC Hero
ECLAIR
Nov. 2009
Android 2.0
Moto ME600
ECLAIR_0_1
Dec. 2009
Android 2.0.1
ECLAIR_MR1
Jan. 2010
Android 2.1
Nexus One
Froyo
May. 2010
Android2.2
HTC Desire HD
Gingerbread
Feb. 2011
Android2.3
Nexus S
Gingerbread
Apr. 2011?
Android2.4
Honeycomb
Feb. 2011
Android3.0
Moto Xoom
android ice
cream
sandwich
Oct. 2011
Android4.0
三星Galaxy
Nexus
13 April 2015
8
Android2.3
• 新的Linux内核版本 ,2.6.35版本
• 新的多媒体框架 :目前2.2版系统使用的OpenCore
已经被完全取代,之前所有的编解码器都将会保留
• Dalvik虚拟机 :一步优化JIT编译器、改进代码特征、
增加识别性能和内存问题
• 陀螺仪和其他传感器 :增加了多种类型传感器的
数据读取支持,包括旋转向量、现行加速、重力
• 混音效果 :低音增强、耳机虚拟化和均衡化等。
• 超大屏幕 :现在支持大屏幕的平板设备
• 系统升级:OTA (Over-the-Air Technology)分发
更新
13 April 2015
9
Android3.0
• 2011年2月2日, 3.0(Honeycomb 蜂巢)版本主要
更新如下:
• ·优化针对平板
• ·全新设计的UI增强网页浏览功能
13 April 2015
10
Android3.1
• 经过优化的Gmail电子邮箱;
• 全面支持GoogleMaps
• 将Android手机系统跟平板系统再次合并从而方便
开发者。
• 任务管理器可滚动,支持USB 输入设备(键盘、鼠
标等)。
• 支持 Google TV.可以支持XBOX 360无线手柄
• widget支持的变化,能更加容易的定制屏幕widget
插件。
13 April 2015
11
Android3.2
• 2011年7月13日发布,版本更新如下:
• 支持7英寸设备
• 引入了应用显示缩放功能
13 April 2015
12
Android4.0(1)
• 全新的ui
• 全新的Chrome Lite浏览器,有离线阅读,16标签页,
隐身浏览模式等。
• 截图功能
• 更强大的图片编辑功能
• 自带照片应用堪比Instagram,可以加滤镜、加相框,
进行360度全景拍摄,照片还能根据地点来排序
• Gmail加入手势、离线搜索功能,UI更强大。
• 新功能People:以联系人照片为核心,界面偏重滑
动而非点击,集成了Twitter、Linkedin、Google+等
通讯工具。有望支持用户自定义添加第三方服务。
13 April 2015
13
Android4.0(2)
• 新增流量管理工具,可具体查看每个应用产生的流
量。
• 正在运行的程序可以像电脑一样的互相切换
• 人脸识别功能
• 系统优化、速度更快
• 支持虚拟按键,手机可以不再拥有任何按键
• 更直观的程序文件夹:
• 平板电脑和智能手机通用
• 支持更大的分辨率
• 专为双核处理器编写的优化驱动
13 April 2015
14
Android4.0(3)
•
•
•
•
•
•
•
•
•
增强的复制粘贴功能
语音功能
全新通知栏:
更加丰富的数据传输功能
更多的感应器支持
语音识别的键盘:
全新的3D驱动, 游戏支持能力提升
全新的谷歌电子市场
增强的桌面插件自定义
13 April 2015
15
主要内容
Android概述
Android特性
Android架构分析
Android组件
13 April 2015
16
Android
• Android 软件系列包括操作系统、中间件和
一些关键应用
• Android是基于JAVA的系统,运行在 Linux 2.6
核上
• Android SDK 提供多种开发所必要的工具与
API
13 April 2015
17
Android特点
•
•
•
•
•
•
•
•
•
应用框架可以重复使用,其组件也可以更换。
Dalvik虚拟机针对移动设备进行了优化。
优化的图形能力支持2D、3D图形(OpenGL ES 1.0 )。
集成了基于开源WebKit引掣的浏览器。
SQLite作为结构化数据存储。
多媒体支持多种音频、视频格式。
GSM Telephony (hardware dependent)
支持蓝牙Bluetooth,3G和WiFi
支持照相机、GPS、指南针和加速度仪等传感器硬件。
• 丰富的开发环境。包括模拟机、调试工具、内存运行检测,
以及为Eclipse IDE所写的插件
13 April 2015
18
Android优势
• 源代码完全开放,便于开发人员更清楚的把握实
现细节,便于提高开发人员的技术水平,有利于开
发出更具差异性的应用。
• 采用了对有限内存、电池和CPU 优化过的虚拟机
Dalvik,Android 的运行速度比想象的要快很多。
• 运营商(中国移动等)的大力支持,产业链条的热
捧。
• 良好的盈利模式(3/7 开),产业链条的各方:运
营商、制造商、独立软件生产商都可以获得不错的
利益。将移动终端的评价标准从硬件向软件转变,
极大的激发了软件开发者的热情。
• Android 的源代码遵循Apache V2 软件许可,而不是
通常的GPL v2 许可。有利于商业开发。
• 具有强大的Linux 社区的支持。
13 April 2015
19
Android的不足
• 目前可用的传统第三方应用还很少,但由于
Android 是一款完全开源的移动计算平台,
相信第三方应用会很快的丰富起来。
• 现有应用完善度不太够,需要的开发工作量
较大。
• Google 提供了一套Java 核心包(J2SE 5,J2SE 6)
的有限子集,尚不承诺遵守Java 任何Java 规
范,可能会造成Java 阵营的进一步分裂。
• 基于QEMU 开发的模拟器调试手段不十分丰
富,速度慢。
• 版本更新太快
13 April 2015
20
主要内容
Android概述
Android特性
Android架构分析
Android组件
13 April 2015
21
Android架构图
13 April 2015
22
Linux内核
• Android 基于Linux内核,但不是Linux
• 内核提供系统核心服务,如进程、内存、电源管理,网络连接,驱
动与安全等
• 并不包括全部的Linux
• Linux 内核位于硬件和软件堆之间的抽象层
– 核心服务:安全机制、内存管理、进程管理、网络、硬件驱动
– 内核扮演的是硬件层和系统其它层次之间的一个抽象层的概念
– 操作系统的初始化和编程接口和标准的Linux 系统是有所不同的
13 April 2015
23
Linux简史
• 个人项目->全球数千人参与的开发项目
• 采用 GPL(GNU General Public License)
– Linux 内核可以防止商业使用
– 从 GNU 项目的用户空间开发受益
13 April 2015
24
Libraries
• C/C++库:被各种Android 组件使用通过应用程序框架开发者
可以使用其功能包括:
• 媒体库:MPEG4 H.264 MP3 JPG PNG .....
• WebKit/LibWebCore:Web 浏览引擎
– 基于开源WebKit的浏览器
– 支持CSS、Javascript、DOM、Ajax
• SQLite 关系数据库引擎
– 轻量级数据库,支持多平台
• 2/3D 图形库、引擎
13 April 2015
25
Android Runtime
• 应用开发语言:Java
• Dalvik 虚拟机依赖于Linux 内核
• 可同时运行多个Dalvik 虚拟机,每一个Android 应用
程序在它自己的Dalvik VM 实例中运行,VM 执行优化
的Dalvik 可执行文件(.dex)
– dx工具把编译过的Java 文件转换为dex 文件
• Dex是专为Dalvik设计的一种压缩格式,适合内存和
处理器速度有限的系统
13 April 2015
26
Dalvik
• 完全为Android定制的虚拟机,基于QEMU
• 提供应用程序可移植性和运行环境的一致性
• 运行优化的dex格式文件和Dalvik字节码
• Java .class/.jar 在创建的时候就被转换成为了 .dex
• 为嵌入式环境设计
• 支持多个虚拟机进程
• 高度CPU优化的字节码解释器
• 高效内存使用
13 April 2015
27
Dalvik
• Dalvik和标准Java虚拟机(JVM) 差别
– Dalvik 基于寄存器,而JVM 基于栈
• Dalvik 经过优化,允许在有限的内存中同时
运行多个虚拟机的实例,每一个Dalvik 应用
作为一个独立的Linux 进程执行。
– 独立进程可防止在虚拟机崩溃的时候所有程序都
被关闭。
• Dalvik 提供一个拥有较少限制许可证的平台
13 April 2015
28
Applications Framework
• Activity manager
– 管理运行应用程序
• Content Provider
– 在各应用之间共享数据
• Resource Manager
– 管理非代码资源
• Notification Manager
– 显示用户提示和状态栏
• Views System
– 可扩展显示,可构建UI
13 April 2015
29
Applications
• JAVA编写的应用程序
• Widget
– 基于互联网的Web小应用
– Web2.0的典型应用
– 小巧轻便、易于开发、与操作系统耦合度低和功
能完整
– 谷歌widget使用了Javascipt及XML等技术,增强
了Android的视图效果
13 April 2015
30
进程管理
• 进程
– 当应用程序的第一个组件需要运行时,Android就创建一
个只包含一个线程的Linux的进程
– 默认情况下,应用程序的所有组件都在这个进程中的线
程中执行
– 每一个进程都被一个manifest file控制
– 当内存资源很紧张的时候,Android会暂时中止掉一些优
先级较低的进程
• 线程
– 在一个进程的主线程中,所有的组件都将被初始化。
– 可以通过Java传统的Thread类进行创建
– Android操作系统会尽量长时间的保持线程
13 April 2015
31
内存管理
• 存储选项
– 开发者根据自己特定的需要来选择存储解决方案
• 存储选项包括:
– 共享机制
• 即便应用程序中止,数据依然保存
– 内部存储
• 一旦应用程序中止,内部存储的数据会被全部删除
– 外部存储
• 可以是可插拔的移动媒体(如SD卡),或者内部的不可插拔的存
储器
– 数据库存储
• 完整的SQLite数据库
– 网络连接
• 使用网络中的服务器来存储和取回数据
13 April 2015
32
电源管理
13 April 2015
33
电源管理
• 基于Linux的PM(Power Managerment)
– 允许根据目前的电池容量调整设备的配置
– 增加了许多新的电源管理措施
• 通过锁和定时器来切换系统的状态,使系统的功耗降
至最低
• 系统正常开机后进入到AWAKE状态
– 背景光会从最亮慢慢调节到用户设定的亮度
– 系统屏幕关闭计时器开始计时
• 在计时时间到之前,如果有任何活动(activity)
发生,如触屏、按键等事件,则将重置计时
器,系统保持在唤醒(AWAKE)状态
13 April 2015
34
电源管理
• 如果有应用程序在这段时间内申请了全唤醒锁(Full wake
lock),那么系统也将保持在唤醒状态,除非用户按下电源
开关键。
• 在唤醒状态下如果电池电量低或者是用AC供电,屏幕关闭
计时器时间到并且选中“外接供电时保持屏幕点亮”选项,
背景光会被强制调节到渐暗(DIM)的状态
• 如果屏幕关闭计时器时间到并且没有全唤醒锁或者用户按
了电源开关键,那么系统状态将被切换到通知
(NOTIFICATION)
• 系统在Sleep状态时如果检测到任何一个唤醒资源(Wakeup
source), 则CPU会从睡眠状态被唤醒,并且调用相关的驱
动的恢复执行函数,接下来马上调用前期注册的early
suspend驱动的恢复执行函数,最后系统状态回到唤醒状态。
13 April 2015
35
IO&驱动
• HAL(硬件抽像层)
– 把Android framework与Linux kernel完全隔开
– 让Android不至于过度依赖Linux kernel
• 让Android更好的独立发展
13 April 2015
36
OPhone及OMS
• Ophone——中移动
• OMS——Open Mobile System,基于Android深度定制的实际
产品
Widget应用
Java应用
本地应用
基于Android深度定制的实际产品
Java
Widget引擎
本地应用框架
图形库
浏览器
引擎
系统库 文件管理
内核 进程调度
13 April 2015
操作系统
虚拟机
DRM
文件系统
中间件
Web应用
Flash
播放器
浏览器
应用
协议栈
……
多媒体
I/O操作
Flash应
用
系统功能
调用
网络功能
进程间通信
网络协议
37
应用平台
设备
驱动
程序
Android相关文件
• Java文件----应用程序源文件
– android 本身相当一部分都是用java 编写而成
– android 的应用使用java 来开发。
• Class文件----Java编译后的目标文件
– Google使用Dalvik 来运行应用程序
– Android的class 文件是编译过程中的中间目标文件,需要链接成dex
文件才能在Dalvik 上运行。
• Dex文件----Android平台上的可执行文件
– Android 虚拟机Dalvik 支持的字节码文件格式。
– 这种虚拟机执行的并非Java 字节码,而是另一种字节码:dex 格式
的字节码。
– 在编译Java 代码之后,通过Android 平台上的工具可以将Java 字节码
转换成Dex 字节码。
– Dalvik VM 针对手机程式/CPU 做过最佳化,可以同时执行许多VM 而
不会占用太多Resource
13 April 2015
38
Android相关文件
• Apk文件----Android上的安装文件
– Apk 是Android 安装包的扩展名,一个Android 安
装包包含了与该Android 应用程序相关的所有文
件。
• apk文件将AndroidManifest.xml文件、应用程序代码
(.dex 文件)、资源文件和其他文件打成一个压缩包。
– 一个工程只能打进一个.apk文件。
– apk 文件的本质是一个zip包。
13 April 2015
39
重要类库
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Android.app :提供高层的程序模型、提供基本的运行环境
Android.content :包含各种的对设备上的数据进行访问和发布的类
Android.database :通过内容提供者浏览和操作数据库
Android.graphics :底层的图形库,可以将它们直接绘制到屏幕上.
Android.location :定位和相关服务的类
Android.media :提供一些类管理多种音频、视频的媒体接口
Android.net :提供帮助网络访问的类
Android.os :提供了系统服务、消息传输、IPC 机制
Android.opengl :提供OpenGL 的工具
Android.provider :提供类访问Android 的内容提供者
Android.telephony :提供与拨打电话相关的API 交互
Android.view :提供基础的用户界面接口框架
Android.util :涉及工具性的方法,例如时间日期的操作
Android.webkit :默认浏览器操作接口
Android.widget :各种UI 元素(大部分可见)在应用程序的屏幕中使用
13 April 2015
40
主要内容
Android概述
Android特性
Android架构分析
Android组件
13 April 2015
41
Android应用主要组件
13 April 2015
42
Android应用主要组件
• AndroidManifest.xml文件
– 包含了正确安装该应用程序的所有配置信息。
• 活动(Activities)
– 一个带有可视化用户界面的应用程序通常都是
通过一个活动来实现的
– 当用户在主屏幕或者应用程序启动器上选择了一
个应用程序,那么一个活动就被激活。
• 服务(Services)
– 长期运行的应用程序,如网络监控或者更新检测
应用程序。
13 April 2015
43
Android应用主要组件
• 内容提供者(Content Providers)
– 可以将Content Providers想象成为一个数据库服务器。一
个Content Providers的工作是管理数据的存储,比如一个
SQLite数据库。如果应用程序很简单,那么开发者也许就
不需要开设一个Content Providers。但是如果应用程序很
巨大或者其功能是使数据可用于多线程活动或者应用,
那么一个Content Providers就是访问数据的工具。
• 广播接收机(Broadcast Receivers)
– Android 里面有各种各样的广播,比如电池的使用状态,
电话的接收和短信的接收都会产生一个广播,应用程序
开发者也可以监听这些广播并做出程序逻辑的处理。
13 April 2015
44