Android系统基本框架

1.下图就是Android的基本框架

u=3637049461,2333775103&fm=26&gp=0.jpg

2.Android基本框架共三层,分别为应用层,类库层,Linux 内核层。其中应用层又分为应用(Applications)和应用框架(Application Framework),类库层分为类库(Libraries)、硬件抽象层(Hardware Abstraction layer)以及安卓运行时(Android Runtime)。
应用(Applications)Applications应用层包含了所有为安卓用户提供服务的系统应用或第三方应用,比如电话,短信,通讯录,相机,闹钟,日历,浏览器,微信,QQ等APP。
应用框架(Application Framework)应用框架(Application Framework)是面向安卓应用开发者的,为开发者提供各种API,以便开发者能构建自己的APP。比如提供了Android的四大组件,Activity,Broadcast Receiver,Content Provider,Service,以及Activity Manager,Window Manager,Package Manager,View System等。
类库(Libraries)这一层是一个C/C++的so库,为Android提供一些特性支持,比如SQLite提供数据库支持,Webkit提供浏览内核支持,此外还有Surface Manager,Audio Manager,Media Framework,OpenGL/ES 等。
硬件抽象层(Hardware Abstraction layer)这是Android在内核外部增加的硬件抽象层(HAL, Hardware Abstraction Layer),把一部分驱动功能放到HAL层中是为了保护源代码。Linux内核采用了GPL协议,所以硬件生产商想要支持Linux系统,必须遵照GPL协议公开硬件驱动的源代码。但这些源代码中包含有许多硬件的设计信息,牵涉到硬件生产商的核心利益。而增加了HAL层之后,硬件厂商就不需要开放所有的驱动代码了。
安卓运行时(Android Runtime)这一层为Android的Dalvik虚拟机。安卓的应用是用Java编写的,而包括HAL在内的Linux的库都是用C/C++编写的,这个落差由Dalvik虚拟机衔接的。当一个应用运行时,进程空间内将包含一个Dalvik虚拟机。Java程序编译为字节码文件,运行在Dalvik虚拟机中。根据Java代码中的要求,Dalvik通过JNI(Java Native Interface)调用底层的C/C++编写的功能。JNI是从Java中调用C/C++模块的接口。由于上层接口的标准化,字节码可以畅通无阻的跨平台运行。
Dalvik虚拟机内部是一个“虚拟”进程空间,有自己的栈和堆,管理代码的运行流程。如果这以“虚拟”进程空间不足,Dalvik内建的垃圾回收(garbage collection)机制会自动清空堆上不再使用的对象。自动的垃圾回收简化了程序员的工作,但速度较慢。手动内存管理效率高,但需要更多的编程,且容易犯错。
Linux 内核(Linux kernel)这一层为Android设备各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。

你可能感兴趣的:(Android系统基本框架)