android 系统架构分析


  了解系统架构对知识点梳理以及学习方向把控都要一定好处。Android分为4个主要功能层,分别是Linux内核层(Linux Kernel),系统运行时库层(Libraries和Android Runtime),应用程序架构层(Application Framework)和应用程序层(Applications)。

这里写图片描述

应用层(Application Framework)

  应用层上包含系统内置的应用程序以及非系统级的应用程序。负责与用户进行直接交互。

应用框架层(Application Framework)

  应用程序框架层提供开发Android应用程序所需的一系列类库,使开发人员可以进行快速的应用程序开发,方便重用组件以及相关功能,也可以通过继承实现个性化的扩展。
这里写图片描述

系统运行库层(Libraries、Android Runtime)

  系统运行库层分为两部分,分别是系统类库和Android运行时库。系统类库通俗讲就是C/C++程序库,该层会用到NDK的开发,所以大家一般习惯称Native层。

1.系统类库
  系统类库大部分由C/C++编写然后由Android系统中的不同组件所使用,并通过应用程序框架为开发者提供服务
  这里写图片描述
  刚刚文章中提到了NDK,Android NDK(Native Development Kit),是Android原生库。NDK为开发者提供了直接使用Android系统资源,并采用C或C++语言编写程序的接口。因此,第三方应用程序可以不依赖于Dalvik虚拟机进行开发。NDK提供了一系列从C或C++生成原生代码所需要的工具,为开发者快速开发C或C++的动态库提供方便,并能自动将生成的动态库和Java应用程序一起打包成应用程序包文件,即.apk文件。
  使用原生库无法访问应用框架层API,兼容性可能无法保障。而且从安全性角度考虑,Android原生库用非类型安全的程序语言C,C++编写,更容易产生安全漏洞,原生库的缺陷(bug)也可能更容易直接影响应用程序的安全性。
  
2.Android运行时库
  当我们使用Android 应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务。每个Java程序都运行在Dalvik虚拟机之上。与PC一样,每个Android应用程序都有自己的进程,Dalvik虚拟机只执行.dex的可执行文件。当Java程序通过编译,最后还需要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上执行。Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式dex(Dalvik Exceutable)的文件。
  Dalvik虚拟机有几个主要特征,专有的dex文件格式;.dex的优化,dex文件的结构是紧凑的;基于寄存器;一个应用,一个虚拟机实例,一个进程。每一个Android应用度运行在一个Dalvik虚拟机实例中,每一个虚拟机实例都是一个独立的进程空间。
  

Linux内核层(Linux Kernel)

  Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和硬件设备驱动等都依赖于Linux内核服务。
这里写图片描述
  

硬件抽象层(HAL)

  硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告