Android历史

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

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

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

Android 架构图:


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新手入门 FAQ
  3. android系统体系结构
  4. Android(安卓)的网络编程
  5. 转:深入解读Linux与Android的相互关系
  6. android系统体系结构
  7. CouchDB降临Android
  8. pandaboard ES学习之旅——5 Android(安卓)Linux内核源代码下载
  9. Android系统对应用程序权限申请的处理方式分析

随机推荐

  1. android点击事件穿透
  2. Android(安卓)aidl Binder框架浅析
  3. android 笔记 --- 相机应用
  4. aFinal框架
  5. android开发技巧精髓十
  6. Android(安卓)Volley完全解析(二),使用Vol
  7. android (20)
  8. Android进程中通信的方式
  9. Android(安卓)startActivityForResult()
  10. Android(安卓)Animation之TranslateAnima