Android系统为什么要分层实现?
2016-05-24 00:00
381 查看
摘要: android应用层、应用框架层、系统运行库层和Linux内核层相关介绍
Android系统采用的分层的架构的思想,架构清晰,层次分明,协同工作,从上到下分别是:应用层、应用框架层、系统运行库层和Linux内核层。
应用程序层:
这个层主要指的就是用java语言编写的运行在虚拟机上的程序,Google在最开始时就 在android系统中捆绑了一些核心的应用(核心应用的编写必须使用应用层序框架层的API框架),例如你android手机中的图库、SMS发送短消息的程序,通讯录等等。
应用程序框架层:
指的就是开发时所需要的API框架,开发人员是在遵守该框架的原则上,调用他们的,开发自己所需要的程序。第三方厂商可以修改框架,但是必须保证CTS测试通过,保证系统兼容性。
系统运行库层:
用于支持应用框架层的各个组件的。就是说当开发人员使用android应用框架层时,android系统会通过一些C/C++库来支持对我们使用的各个组件,使其能更好地为开发者服务。
linux核心层:
android的核心系统服务如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于Linux2.6内核,Linux内核同时也作为硬件和软件栈之间的抽象层。
在Core Libraries里不得不提HAL(Hardware AbstractLayer)硬件抽象层,从某些性质上说,HAL可以单独说是一个Layer,它相当于Linux系统中的用户C程序组,不仅要在Linux系统中完成C程序要完成的任务,还要向上给JNI提供完成这些工作的接口,实现从Java调用C获取Kernel系统服务的机制。
那么问题来了,为什么要有HAL?
传统的Linux系统把对硬件的支持完全实现在内核空间中,但是Linux内核源码要遵循GPL(GNU public License)协议,如果Android要在kernel中修改,就必须要将其开源,这会有损厂商利益,所以kernel层只提供可简单的硬件访问通道,用户空间以硬件抽象层HAL的形式来支持。
Android系统采用的分层的架构的思想,架构清晰,层次分明,协同工作,从上到下分别是:应用层、应用框架层、系统运行库层和Linux内核层。
应用程序层:
这个层主要指的就是用java语言编写的运行在虚拟机上的程序,Google在最开始时就 在android系统中捆绑了一些核心的应用(核心应用的编写必须使用应用层序框架层的API框架),例如你android手机中的图库、SMS发送短消息的程序,通讯录等等。
应用程序框架层:
指的就是开发时所需要的API框架,开发人员是在遵守该框架的原则上,调用他们的,开发自己所需要的程序。第三方厂商可以修改框架,但是必须保证CTS测试通过,保证系统兼容性。
系统运行库层:
用于支持应用框架层的各个组件的。就是说当开发人员使用android应用框架层时,android系统会通过一些C/C++库来支持对我们使用的各个组件,使其能更好地为开发者服务。
linux核心层:
android的核心系统服务如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于Linux2.6内核,Linux内核同时也作为硬件和软件栈之间的抽象层。
在Core Libraries里不得不提HAL(Hardware AbstractLayer)硬件抽象层,从某些性质上说,HAL可以单独说是一个Layer,它相当于Linux系统中的用户C程序组,不仅要在Linux系统中完成C程序要完成的任务,还要向上给JNI提供完成这些工作的接口,实现从Java调用C获取Kernel系统服务的机制。
那么问题来了,为什么要有HAL?
传统的Linux系统把对硬件的支持完全实现在内核空间中,但是Linux内核源码要遵循GPL(GNU public License)协议,如果Android要在kernel中修改,就必须要将其开源,这会有损厂商利益,所以kernel层只提供可简单的硬件访问通道,用户空间以硬件抽象层HAL的形式来支持。
相关文章推荐
- 使用编译时注解方式实现View注入(Android Studio)
- Android DrawerLayout 侧滑菜单栏
- Android RxJava使用介绍(二) RxJava的操作符
- Java+Android实现DES与四种模式、AES、MD5算法三合一
- ViewDragHelper源码分析
- android开发笔记之Json解析
- Android三级图片缓存
- [Android]Android开源工具项目集合20160523
- 关于handler机制(结合源码及方法的调用去总结)
- android源码解析(二十七)-->HOME事件流程
- 第一个Android crackme(2016-05)
- Android-architecture之MVC、MVP、MVVM、Data-Binding
- Android RxJava使用介绍(一)概念
- android studio 2.0 导入工程
- android中的各类权限
- viewHolder工具类
- 详解-Android各种提示框
- Android必需了解的东西
- android插入SQLite中文乱码问题
- Android Architecture(Is Activity God?)