2017.1.19—-学习Android第一天
Android系统架构
- 分层的架构:分4层
1.application:应用层(Java开发)
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。
2.application framework:应用框架层(Java+JNI)
该层是Android应用开发的基础,包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。
3.Libraries, Dalvik:函数库&虚拟机层(C/C++)
系统库包括九个子系统:图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.NET、android.media等等。
Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。
4.Linux Kernel:Linux内核驱动层(C)
Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。
驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。
-两种虚拟机:
- JVM:Java虚拟机
编译后的文件格式:.java–>.class–>.jar - DVM:Dalvik虚拟机
编译后的文件格式:.java–>.class–>.dex–>.odex
区别:
①基于的架构不同:
jvm是基于栈架构,栈是位于内存上的一个空间,执行指令操作需要向CPU寻址;
dvm是基于寄存器架构,寄存器是CPU的组成部分,执行指令操作无需寻址,直接执行;
②执行文件的格式不同:
jvm执行的是多个.class文件;
dvm执行的是一个.dex文件;
ART模式:Android Runtime
Android4.4以前,安卓手机系统的应用均在dalvik虚拟机上运行,这种运行模式需要依靠一个编译器来实现与应用程序的沟通。应用程序每次运行时都需要将代码转换为机器码才能运行,这样造成了耗电快,占用内存大的现象。
ART:程序在安装时需要预编译读取,将代码转换为机器码。
好处:程序运行时无需转换,运行速度快;
缺点:安装时间稍长,因为要转换成机器码,所占用稍高的内存空间。