Android历史

Android是一款基于Linux的操作系统,面向触摸屏移动设备如智能手机和平板电脑.

最早是由位于加州的Android公司所开发, 2003年创立,2005年被Google收购。

Android 2007年正式公开,2008年10月出售第一款手机。

Android 架构图:

移动互联网应用技术架构简介-Android_第1张图片

Android OS可以被看作一个4层的软件堆栈,每层都包含一组程序组件。总体上包括操作系统, 中间件和核心应用。每层都为上层提供服务。

第一层 内核(Linux Kernel)

最下面这一层是Linux内核。Android OS是Google基于Linux 2.6 内核发展而来,4.0版本以后是基于Linux3.x,Linux负责硬件交互,包含基本的硬件驱动程序。另外Linux内核还充当硬件层和其他软件层之间的抽象层。Android使用Linux完成核心功能,如内存管理,进程管理,网络协议栈,电源管理,安全设置等。正因为Android构建在Linux内核上,其具备非常好的硬件移植性,并且其内核也非常健壮。Android系统使用binder框架来作为Inter-Process Communication (IPC) 机制。该binder框架最早是由OpenBinder所开发并被用于BeOS系统的IPC。

第二层 库(Libraries)

接下来是Android的本地库。这一层使得设备能处理各类数据。这些库是用c或者c++语言所写并且和硬件特性相关。

Surface Manager: 用来组成带离屏缓存(Off-screen buffering)的窗口管理器。离屏缓存表示你不能直接绘制到屏幕,你需要先绘制到一块特定的缓存中去,在那里结合其他绘画元素然后形成整个用户可以看到的屏幕界面。离屏缓存和窗口透明度有关。

Media framework: 基于PacketVideo OpenCore项目,提供不同的媒体编解码库,以处理不同的媒体类型。

SQLite: 轻量级数据库引擎,存放数据

WebKit: 浏览器引擎,用来呈现HTML内容

OpenGL: 2D/3D图形引擎

Freetype: 位图(bitmap)和向量(vector)图显示支持

libc: C语言标准函数库, 源于BSD

SGL: 底层的2D图形引擎

第二层 运行时(Android Runtime)

Android运行时,和Libraries处于同一层,但位置稍在上面,包含Dalvik虚拟机和核心Java库。

Android应用选择了Java开发语言,Java调用将通过运行时被转换为本地调用即本地C/C++代码库函数。

Dalvik 虚拟机

Dalvik是一种非标准(非JCP,或者说是Google自己主导的标准)JVM,并为省电、低内存、低处理能力运行环境做了优化。Dalvik虚拟机本身是用Portable C写的。

Dalvik和JVM的不同主要在于:

1、Dalvik采用的是基于寄存器的架构,而一般JVM是基于堆栈的。基于堆栈需要执行更多的指令,但基于寄存器的指令长度更长。

2、Dalvik不执行.class文件,相反它执行.dex文件。.dex文件是在编译时由.class文件生成,各个类文件中重复的字符串和常量只在.dex中存放一次,另外Java字节码被转换成Dalvik虚拟机所使用的替代指令集,这样是为了在资源受限的环境中提供更高的效率。

(实际性能,存在争议,Oracle的一次测试显示其JVM比Android2.2Dalvik快2、3倍)

Dalvik VM允许同时创建多个虚拟机实例,来提供安全、隔离、内存管理和线程支持。作者是Google的Dan Bornstein。

(注意!由于Android 5.0的推出,Android系统架构发生了较大变化,其中最核心的是Dalvik虚拟机被ART(Android Runtime)替换。

关于ART的信息,请参阅:http://www.techbrood.com/?q=ART+runtime)


核心Java库
这些库和Java SE/Java ME库不同,不过提供了Java SE里面定义的绝大多数功能。这些库也叫Dalvik Libraries,显然是用Java语言写的。


第三层 应用框架(Application Framework)

这一层直接和我们的应用程序交互,负责管理电话设备的基本功能,如资源管理、语音呼叫管理等。作为开发人员,你可以把它们当作应用程序工具库来看待。

Activity Manager: 管理应用程序活动生命周期

Content Providers: 管理程序之间的数据共享

Telephony Manager: 管理电话呼叫

Location Manager: 提供位置管理, 使用GPS、基站或者无线局域网信号

Resource Manager: 管理应用程序中使用到的各种各样的资源

第四层 应用程序(Applications)

应用程序在架构的最上层,我们开发的应用程序就在这里。有一些标准预装程序如短信息(SMS)、拨号(Dialer)、浏览器、联系人等。

我们可以替换这些预装应用,只要用户许可,技术上没有什么限制。


参考链接:

http://www.edureka.in/blog/beginners-guide-android-architecture/

http://www.android-app-market.com/android-architecture.html

http://techblogon.com/android-architecture/

http://www.compiletimeerror.com/2012/12/blog-post.html


by iefreer

更多相关文章

  1. Android应用程序签名
  2. 使用android快速开发框架afinal 开发android应用程序demo
  3. 7个Android应用程序源代码
  4. 利用HTML5开发Android应用程序 PPT
  5. [转]Android的应用程序结构分析:HelloActivity
  6. Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
  7. Android应用程序结构

随机推荐

  1. 关于msyql事务隔离你要知道
  2. 打开和关闭mysql服务的两种实现方法
  3. mySQL服务器连接,断开及cmd使用操作
  4. 深入了解mysql索引
  5. 怎样安全地关闭MySQL实例
  6. MySQL 表的垂直拆分和水平拆分
  7. C++连接使用MySQL的方法
  8. 详解MySQL 慢查询
  9. MySQL多表查询详解下
  10. MySQL多表查询详解上