前言

学习Android前前后后也有一段时间了,怎么说呢,笔者是在13年开始自学Android的。不过之后由于找工作、实习等原因,有很长一段真空期没有再去学习Android了。加之笔者暂时从事的也并非Android方向的工作,学习研究也就一度落下了。不过作为一个Android爱好者,现在笔者也会利用业余时间进行一些在学习了。 以前的学习总是拘泥于实现漂亮好看的界面,对于系统架构的一些理论性东西了解甚微。在今后的学习中也会注意到这些,既然打定注意以一个新的方式学习,先来系统的了解一下Android整个系统架构。

What is Android

所谓的What is的解释可谓仁者见仁,智者见智。 普通用户的角度,他可以片面的认为它是一部“手机”,深入一点的话会知道Android是手机上搭载的"操作系统“。 商人的角度他可能并不简单的认为Android是一个手机或操作系统,他可能看到是基由Android所带来影响,对整个移动互联网的冲击和商机。 开发者的角度,他会知道Android是基于 Linux平台 ,由 操作系统 中间件 用户界面 应用软件 组成,开放、完整的移动软件,利用系统提供的一些列和重用的组件集成,可以实现各类有趣实用的apps。 But what is? 这是个开放的问题。 如若非要下一个定义,笔者也只好引用Android负责人 Dan Morrill解释的: Android并不是传统的Linux风格的一个规范或分发版本,也不是一些列可重用的组件集成,Android是一个用于连接设备的软件块。 What is Android

Android架构详解

从上面那张图我们就可以简单的看出Android系统架构的组成部分以及其简单的运作方式,下面给出Android系统架构的详细架构图(来源于网络):
显而易见的,根据上图自底向上我们知道Android系统架构包含5大部分:Linux Kernel 、Libraries、Android Runtime、Application framework、application。 下面将依次了解这5部分

Linux Kernel

android是基于linux2.6 提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux kernel也作为硬件和软件之间的抽象层,隐藏底层硬件细节为上层提供统一服务。对于做Android应用开发的开发者来说,这部分无需深入了解。

Android Runtime

Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android app就是Dalvik虚拟机中的实力,运行在他们自己的进程中。一个设备可以高效的运行多个虚拟机。Dalvik虚拟机可执行文件格式为.dex(专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统)。 与大多虚拟机(jvm)不同的是,Dalvik是基于寄存器的,而不是基于栈的。这使得Dalvik支持的机器指令更大(基于栈的需要更多指令)。dx是一套工具,可以将.class文件转化为.dex,通常为多对一关系。由于dex进行最佳化,文件大小增加1-4倍,以ODEX结尾。需要提出的是Dalvik虚拟机依赖于Linux内核提供基本功能(线程、底层内存管理)。

Libraries(运行库)

Android系统会通过一些C/C++库来支持我们使用的各个组件,使其更好的为我们服务。这些功能通过Android的应用程序框架暴漏给开发者。 Bionic 系统C库: C语言标准库,系统最底层的库,C库基由Linux系统来调用。 MediaFramework: Android系统多媒体库,基于PackerVideo的OpenCORE,支持各种音频、视频格式的录制和播放,包括静态图片文件。 LibVebCore: web浏览器引擎,驱动Android浏览器和内嵌的web视图 SGL: 基本的2D图形引擎 3D: 基于OpenGL ES的实现。 SQLite: 应用程序使用的强大、轻量的关系数据库引擎。

Application Framework

Application Framework也许是大部分开发者接触的最多的部分了,因为Android应用的开发都是通过框架与Android底层进行交互来实现的。 应用开发层是Android提供给开发者一个框架开发平台,开发者在遵循框架原则的基础上,对框架进行扩展从而开发出各式各样的app应用。 应用程序的体系结构简化了组件的重用,使得开发者开发也更加的灵活。
  • 视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按 钮,甚至是内嵌的网页浏览器。
  • 内容提供者(Content Providers)——使应 用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。
  • 资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件。
  • 通知管理器(NotificationManager——使所有的应用程序能够在状态栏显示自 定义警告。
  • 活动管理器(ActivityManager——管理应用程序生命周期,提供通用的导 航回退功能。
  • Applications

    由Google我iAndroid系统装配的核心app集合,包括电子邮件客户端、SMS、日期、地图、浏览器等。Android是开源的,开源力量的强大使得能够运行在Android系统上的app层出不穷。

小结

Android采取的是分层的架构,各层清晰分工明确,其本身就是一套软件堆叠(Software stack:软件叠层架构),主要分为三层:操作系统、中间件、应用程序。

更多相关文章

  1. Android(安卓)系统及framework 概述
  2. 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
  3. Android应用程序与SurfaceFlinger服务的关系概述和学习计划
  4. 10款最佳Android快速应用程序切换
  5. Android开发者e周报 第6期
  6. Android应用程序的快速启动
  7. 02.Android应用程序组成
  8. Android应用程序快速启动的秘诀
  9. Android系统

随机推荐

  1. android自定义属性 format类型
  2. Android学习笔记之mainfest文件中android
  3. 装载 联系人2.0的相关处理
  4. Android中设置文本颜色的三种方法
  5. android junit入门(一) JUNIT测试
  6. android监听网络变化
  7. Android淘宝好评星级进度条RatingBar原来
  8. Android获取手机方向
  9. Android布局属性详解
  10. Delphi XE5 for android 调用Java类库必