Android分为如图所示的层次。其中应用层和框架层都是使用JAVA,Libraries层大多用C++。框架层为应用层提供了封装好了的类,如Activity, Service的使用等。
框架层调用了Libraries层的C++动态库。它是通过JNI机制对编译完成的C++动态库进行调用的。在Linux系统下动态库文件是以.so为后缀的。
Libraries层绿色部分来自LINUX系统,GOOGLE实现的部分主要是Android运行时环境需要的Dalvik虚拟机。Dalvik虚拟机处理的DEX文件是经过高度优化的。与JAVA虚拟机基于栈的实现方式不同,Dalvik虚拟机基于寄存器实现,运行效率更高。