分享

Android系统架构介绍

 方海龙的书馆 2016-02-18

前言

      学习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) ——提供访问非代码资源,如本地化字符串、图形和布局文件。
  •          通知管理器(Notification Manager ) ——使所有的应用程序能够在状态栏显示自 定义警告。
  •          活动管理器(Activity Manager ) ——管理应用程序生命周期,提供通用的导 航回退功能。
  • Applications

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

小结

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多