android 系统架构

android 系统架构

简介

Android开源和兼容性技术负责人Dan Morrill在Android开发手册兼容性部分所解释的,“Android并不是传统的Linux风格的一个规范或分发版本,也不是一系列可重用的组件集成,Android是一个用于连接设备的软件块。”

Android 是一种以Linux 为核心的移动平台,可以安装在智能手机与平版计算机等移动设备上。Android 整个系统架构如下
android-os

从底层往上分为四个主要功能层:

  • linux内核层
  • 系统运行时库(libraries和android runtime)
  • 应用程序架构层(application fragment)
  • 应用程序层(applicaion)

下面对四个层分别进行简单的介绍,为以后需要的时候,查看方便

linux内核层

我们通常说android是基于linux内核实现的一个嵌入式系统,所以linux内核是os的重要组成部分。linux内核是持续更新的,其中android5.0版本中的linux内核版本是3.10。
其中包含的主要驱动模块:显示屏驱动,相机驱动,蓝牙驱动,闪存驱动,binder驱动,usb驱动,键盘驱动,wifi驱动,音频驱动,电源管理

系统运行时库(libraries和android runtime)

两部分:library 、 android runtime

libray

Android 有一个内部函数库,此函数库主要以C/C++编写而成。Android 应用程序开发人员并非直接使用此函数库,而是通过更上层的应用程序框架(Application Framework)来使用此函数库功能,所以有人称此类函数库为原生函数库(Native Libraries)。此函数库依照功能又可细分成各种类型的函数库,以下列出比较重要的函数库。

  • Media Framework(媒体函数库):此函数库让Android 可以播放与录制许多常见的音频与视频文件,支持的文件类型包括MPEG4、H.264、MP3、AAC、AMR、JPG 与PNG 等。
  • Surface Manager(外观管理函数库):管理图形界面的操作与2D、3D 图层的显示。
  • WebKit①:Android 内置的浏览器,其引擎就是WebKit,与Google 的Chrome②、Apple的Safari③ 浏览器引擎相同。
  • SGL:专门处理Android 的2D 图形。
  • OpenGL|ES④:适合嵌入式系统使用的3D 图形函数库,此函数库实现OpenGL ES 1.0版以上的功能。如果Android 手机本身有3D 硬件加速器,程序会直接使用该硬件加速器,否则会使用软件加速功能。
  • SQLite⑤:属轻量级但功能齐全的关系数据库引擎,方便让Android 所有的应用程序访问数据。

android runtime

Android Runtime 可分成Android Core Libraries(Android 核心函数库)与Dalvik VirtualMachine(Dalvik VM,Dalvik 虚拟机)。
Android Core Libraries:Android 核心函数库所提供的功能,大部分与Sun 的Java 核心函数库相同。
Dalvik Virtual Machine:一般编写好的Java 程序编译后会产生class 文件(或称Bytecode),而且由JVM(Java Virtual Machine)运行;但是Android 不使用JVM,而改用Google 自行研发的Dalvik VM,所运行的文件则是dex 文件(Dalvik Executable),而非class 文件。在Dalvik VM运行dex 文件之前,必须使用Android 开发工具(Android SDK)内的dx 工具将class 文件转成dex 文件⑦,然后交给Dalvik VM运行,如图3-29 所示。dex 文件比class 文件更精简、运行性能更佳,而且更省电,可以说是为了移动设备量身打造的。由前述可知,开发者仍需要以Java 程序语言编写Android 应用程序,而最后dx 工具会将java 文件产生的class 文件转成dex 文件。

应用程序架构层(application fragment)

就是android的API,开发者调用的api都来自这里。比如View、activity manager、ContentProvider、NotificationManager等等

应用程序层(application)

这里就是安装app的地方,这里面包含用户自己安装的app和手机系统内置的app

写在最后

基本上所有的内容读来自网络上的各家博客,做的只是整理一遍,希望哪些复习回顾、或者准备面试,就拿过来回顾一样
一直说自己是android工程师,这个最基本的认识还是要知道的吧。

posted @ 2016-05-05 14:14  zhou_guobao  阅读(666)  评论(0编辑  收藏  举报