1.Android 系统架构html
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层,以下图所示:java
2.application应用程序层linux
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者能够利用Java语言设计和编写属于本身的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处android
3.application framework应用程序框架层编程
该层是Android应用开发的基础,提供API给写application应用程序的人调用,经常使用到的类库以下:浏览器
而四大组件又分为:架构
4.Libraries系统库app
系统库大部分由C/C++编写,提供的功能给Android应用程序框架来调用框架
5. Android runtime 运行库jvm
包含了Core Library和Dalvik虚拟机.
Core Library: 提供JAVA编程语言核心库的大多数功能
Dalvik虚拟机(dvm): 每一个Java程序都离不开Java虚拟机, Android系统也实现了本身的一个相似JVM可是更适合嵌入式平台的虚拟机——Dalvik。Dalvik的功能等同于JVM,为Android平台上的Java代码提供了运行环境.惟一不一样的是dvm执行的是.dex文件,jvm执行的是.class文件.
过程: android程序编译完以后生产.class文件,而后,dex工具会把.class文件处理成.dex文件,而后把资源文件和.dex文件等打包成.apk文件,以下图所示:
dvm的优势在于:基于寄存器存取,而非虚拟栈,能够根据硬件实现最大的优化,比较适合移动设备。
5.1 android 4.4开始, DVM被替换
因为DVM安装后的APP是字节码,因此每次打开APP的时候,都会去把字节码翻译为机器码,致使APP运行效率下降,用户体验不好.
因此在 Android 4.4开始,ART(Android Runtime)虚拟机发布,用来替换 Dalvik 虚拟机,Android 4.4 默认采用 DVM,但能够选择ART(以下图所示)。在 Android 5.0 开始默认使用 ART,DVM 今后被淘汰,而且ART 支持 64 位并兼容 32 位 CPU,而DVM只支持32 位 CPU.
ART优势:安装应用程序时会进行一次 AOT(ahead of time compilation, 预编译),将字节码编译成机器码并存储在本地,这样APP每次运行时就不须要执行编译了,APP运行效率大大提高,耗电量也会下降.
ART缺点: 应用程序的安装时间变长,而且安装后的存储空间占用多一些(存储有机器码的缘由)
6.linux内核
用来运行应用程序,并包含各类驱动,向应用层提供调用。