美文网首页
Android系统基本框架

Android系统基本框架

作者: keepWriteCode | 来源:发表于2019-06-11 20:58 被阅读0次

    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系统基本框架

          本文链接:https://www.haomeiwen.com/subject/syqffctx.html