Android架构笔记

一、 Android架构
Android就是包括一个操作系统、中间件和关键应用的移动设备的一个软件堆。
从底层到上层共包括四层:
1、 Linux内核层
Linux操作系统及驱动
2、 系统库和Andriod运行时
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带,通过JAVA本地调用JNI(Java Native Interface)的接口函数实现和上层之间的通信。
Android运行时包括核心库和Dalvik虚拟机,主要由C和C++实现。
3、 应用框架层
是Android应用开发的基础,主要由Java语言实现,为应用层提供API。应用层框架提供了可以服用的组件,提供了应用开发的规范,屏蔽了应用层和底层交互的复杂性。
4、 应用程序层
核心应用程序包、Java语言设计和编写的应用程序,两者彼此平等、友好共处,同时,开发人员也可以使用自行开发应用程序替换核心应用程序,使手机应用更加灵活和个性化。
在这里插入图片描述

二、 HAL层介绍
1、HAL简介
HAL(Hardware Abstraction Layer 硬件抽象层),处于Linux内核层之上,作用:1). Linux是遵从GPL开源协议,把控制硬件的动作(或者是寄存器直接映射到HAL中)都放到了 Android HAL中,可以避开开源协议。2).在HAL中实现驱动的进一步接口封装,提供给构架层。Android HAL存在的原因主要有:
a) 并不是所有的硬件设备都有标准的linux kernel的接口;
b) KERNEL DRIVER涉及到GPL的版权,某些设备制造商并不愿意公开硬件驱动,所以才去用HAL方式绕过GPL;
c) 针对某些硬件,Android有一些特殊的需求。