Android框架概述
从一张老图开始
大体上,Android是分成三层APP,Framework,Kernel。三层所面向的对象是不一样的,APP层面向的是用户,更多的倾向于界面,功能的设计。Framework层主要的面向对象是APP开发者以及Kernel提供的驱动接口,倾向于将Kernel提供的功能整合,为上层的APP设计者提供服务。Kernel一般是面向硬件接口,提供Framework中服务的。
APP层一般指的是应用,UI把界面设计出来之后的部分都会属于APP层。具体的Layout设计,组件设计,功能设计都是由APP层负责。一直到各种Service各种Manager,就渐渐是Framework层了。个人感觉层次的区分并没有一个定量的标准,更多的是按照需要实现的功能进行区分。
Framework细分之后可以分作Framework、Libraries以及HAL三个部分。Framework一般讲的是如图的一些Manager以及Service,这一部分一般是用java语言来编写。
Libraries一般是一些库文件(.so或.a),利用JNI技术使上层得以调用,库一般是用c或c++编写的。和Library层并行的会有Dalvik虚拟机,而5.0版本之后有ART虚拟机,装APP的时候会预存解码,装APP的速度就会下降,但运行的时候更快。
HAL层全称是Hardware Abstract Layer,在图中并无示意,这一层负责对Kernel层进行整合,