1. 设备驱动程序层(Linux Kernel):该层主要包括:驱动、内存管理、进程管理、网络协议等组件。

  2. 执行层c/c++函数库层(Libraries)及Android Runtime:

  • Java不能直接访问硬件,要访问硬件,必须使用NDK。NDK是由c/c++语言编写的库(.so文件),该层是对应用程序框架层提供支持的层。

  • SSL:Secure Sockets Layer安全套接字层

  • libc:C运行时库

  • WebKit:负责浏览器支持(Chrome和Safari都使用该库来支持浏览器)

  • FreeType:负责字体支持

应用程序框架层(Application FrameWork):该层一般都是开发人员直接调用的API。该层主要由Java语言编写。应用程序层(Applications):由运行在Dalvik虚拟机上的app组成。(Dalvik是Google公司为Android专门设计的Java虚拟机,运行Java程序的速度比JVM更快,以此来克服手持设备在内存、处理器速度和功率等方面上的限制)。该层由Java语言编写。
  1. Dalvik是冰岛一个小镇的名字。Dalvik VM获取生成的java类文件,将它们组合为一个或者多个、Dalvik可执行文件(.dex)。Dalvik VM的目标是找到所有可能的方式来优化JVM性能、内存及电池寿命。

  2. 采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是java字节码,而是.dex文件。这意味着无法直接执行java字节码,必须得到java的类文件,然后将它们转换为.dex文件。

wKiom1Us6DrydAn2AASatE_e3kQ948.jpg