1.Android简介

Android Developers Guide 中将Android定义为针对移动设备的软件栈———用于实现完整的功能解决方案的软件子系统集合。这个栈中包括操作系统(Linux内核修改而来)、部分基于Java的中间件(用于连接底层操作系统和高层应用的软件),以及诸如浏览器(Browser)和联系人管理器(Contacts)一类的关键应用(都是用Java编写的)

Android具有以下特点:

允许重用和替换应用组件的应用程序框架(本章稍后会展开讨论);

支持蓝牙、EDGE3GWi-Fi(需硬件支持);

支持摄像头、GPS、罗盘和加速度计① (需硬件支持);

针对移动设备优化的Dalvik虚拟机(DalvikVirtualMachine,DVM);

GSM 电话支持(需硬件支持);

集成了基于开源WebKit引擎的浏览器;

支持常见的音频、视频和静态图片格式(MPEG-4H.264MP3AACAMRJPGPNGGIF);

自定义的2D图形库,提供了经优化的图形显示;基于OpenGLES1.0规范的3D图形显示(硬件加速可选);

用于结构化数据存储的SQLite

Android强大的开发环境(包括设备仿真器和EclipseIDE的插件)并不是Android设备软件栈的一部分,但也应该被视为Android的一大特点。

2.Android演化史

跟很多人想象的不一样,Android并不是源自GoogleAndroid最早是由美国加州帕洛阿尔托市的一家名叫Android的创业公司开发的。20057,Google收购了这家公司,并于200711月发布了AndroidSDK的预览版。

20088月中旬,Google发布了Android0.9SDKbeta,一个月后发布了Android1.0SDK。表1-1罗列了SDK随后的更新。(1.5版开始,每个主要版本都会有一个相应的代号,每个代号都是某种甜点的名称。)

1-1 Android的主要版本



3.Android系统架构

Android软件栈的顶层是应用,中间是中间件(由应用框架、库和Android运行时组成),底层则是带有各种驱动的Linux内核。图1-1展示了这种分层架构。


1-1 Android的分层架构由若干主要部分构成

用户关心的是应用,Android发行时就附带了很多有用的核心应用,包括浏览器(Browser)、联系人(Contacts)和电话(Phone)。所有的应用都是用Java语言编写的。应用构成了Android架构的最顶层。

直接支撑应用层的是应用框架(application framework),这是一组用于构建应用的高层构件。应用框架是预装在Android设备中的,其中包含以下组件。

Activity管理器(Activity Manager):该组件用于管理所有Activity的生命周期,并维护一个用于实现应用内部和应用之间切换Activity的共享活动栈。本章稍后会详细讨论。

内容提供器(Content Providers):这些组件将数据(例如浏览器应用中的书签)封装成能在应用间共享的形式

位置管理器(Location Manager):该组件使Android能获取设备的物理位置。

通知管理器(Notification Manager):该组件使应用可以将重要的事件(例如有新短消息)在状态栏中显示出来且不会打断用户当前的活动。

包管理器(Package Manager):该组件使应用可以知道设备上安装的其他包的情况。(本章稍后会讨论应用包。)

资源管理器(Resource Manager):该组件使应用可以访问各种资源,稍后会在攻略1-5中讨论该主题。

电话管理器(Telephony Manager):该组件使应用可以知道设备的电话服务状态。它还负责电话的拨打和接听。

视图系统(View System):该组件负责管理用户界面元素和生成面向用户界面的事件。(在攻略1-5中会简要探讨这些内容。)

窗口管理器(Window Manager):该组件将屏幕上的元素组织到窗口中,分配绘图界面,同时执行其他窗口相关任务。

应用框架中的组件在完成各自任务时都要依赖一些C/C++库。开发人员通过应用框架中的API与下面这些库交互。

FreeType:这个库用于支持点阵字和向量字的渲染。

libc:这是一个源自BSD系统的标准C系统库的实现,C库针对嵌入式Linux设备进行了优化。

LibWebCore:这个库为Android浏览器和嵌入式Web视图提供了现代化的高速Web浏览器引擎。它是基于WebKit(http://en.wikipedia.org/wiki/WebKit),GoogleChrome和苹果的Safari浏览器使用的也是WebKit

媒体框架(Media Framework):这些基于Packet VideoOpen CORE的库支持多种流行的影音格式的播放和录制,还能处理静态图片文件。支持的格式包括MPEG-4H.264MP3AACAMRJPEGPNG

Open GL|ES:这是Android基于OpenGL|ES1.0APIOpenGL实现的3D 绘图库。它可以使用硬件3D加速(如果能用的话)或是内建的(经过高度优化的)3D 软件光栅器。

SGL:这个库提供了底层的2D绘图引擎。

SQLite:这个库提供了一个功能强大的轻量级关系数据库引擎,可供所有应用使用。MozillaFirefox和苹果的iPhone也用这个引擎实现持久化存储。

SSL:这个库提供了基于SSL (安全套接层)的网络通信安全机制。

外观管理器(Surface Manager):这个库负责管理显示子系统的访问方式并将各种应用的2D3D图形层无缝地组合在一起。

Android运行时环境由核心库(ApacheHarmonyJava5版实现的一个子集)Dalvik虚拟机组成。Dalvik不是基于栈的,而是一个基于寄存器的非Java虚拟机。

——摘自《Android攻略》

更多相关文章

  1. adb android设备无法连上eclipse
  2. Android添加用户组及自定义App权限
  3. Android学习笔记(16):绝对布局AbsoluteLayout、常用距离单位
  4. 1. 0 Android(安卓)开发中的界面编程
  5. <转>android 中px,sp等的区别
  6. android surfaceflinger研究
  7. android ListView的使用方法
  8. IOS 5编程 -2 -准备工作。
  9. Android系统文件夹结构详细解析

随机推荐

  1. 【Java面试】@Resource 和 @Autowired 的
  2. 新手必会的静态站点生成器——Gridsome
  3. 后台用户列表数据展示(php)
  4. 如何学插画?学习插画教程
  5. 【知其然,知其所以然】配置中心 Apollo源
  6. 属性与方法重载 、命名空间与类自动加载
  7. 登录功能(php)
  8. 别再用 System.currentTimeMillis() 统计
  9. 脸怎么绘画?漫画脸部绘画基础技巧
  10. Android(安卓)Binder机制(使用)