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