您的位置:首页 > 运维架构 > 网站架构

Android系统架构、基础组件、工具下载、JVM&DVM&ART

2015-11-05 17:16 816 查看
一、Android 系统架构

Android 是一个完整的操作系统,包含中间件和一些关建的应用程序

Android 有四层架构,五块区域. 其中架构层自上至下依次为

应用层 Application

应用框架层 Application Framework

函数库 Library

Linux 内核

下面依次简介各层及区域

层级/区域简介
Linux KernelAndroid 系统是基于 Linux2.6 内核修改而来,此层大多都是操作相关的硬件驱动
Libraries由 C/C++ 编写的完成 Android 核心功能的相关类库
Application Framework由 Java 语言编写,包含供开发人员调用的各种 API
Applications日常安装的所有应用程序都属于该层
Android Runtime安卓运行时环境
Core Libraries核心类库
Dalvik Virtual MachineAndroid 底层都是 Linux 系统,使用 C、C++ 语言编写的,所以 Android 程序要在 Linux 上运行就需要虚拟机,即 DVM,其针对手机内存、CPU 性能有限等情况做了优化处理


一个小例子介绍 Android 工作流程

闹钟应用实际上就是定时播放音乐

闹钟应用调用 Application Framework 层的 MediaPlayer

MediaPlayer 访问 Libraries 层中的 Media Framework

Media Framework 再使用C语言操作 Linux Kernel 层的 Audio Drivers 去播放音乐

二、Android 提供了哪些东西

四大组件

Activity

Service

BroadcastReceiver

ContentProvider

丰富的系统控件

RelativeLayout

LinearLayout

EditText

WebView

……

SQLite 数据库

定位:GPS(Android 自带)、LBS(基于位置服务-网络)……

多媒体:视频、音频、录音、拍照、闹铃……

传感器:光线、重力、陀螺仪、指纹、3D TOUCH……

简单基本组件介绍

View:所有 UI 控件、容器控件的基类,View 组件就是 Android 应用中用户实实在在看到的部分

Activity:负责显示界面并与用户交互

Service:通常位于后台运行,一般不需要与用户交互,因此 Service 组件没有图形用户界面

BroadcastReceiver:监听器,其监听的事件源是 Android 应用中的其他组件

ContentProvider:一个应用使用 ContentProvider 暴露自己的数据,另一个应用程序通过 ContentResolver 来访问数据

Intent 和 IntentFilter:Activity、Service、BroadcastReceiver 三种组件之间的通讯载体

三、开发工具下载(A_ 必须, B_ 二选一)

A_ Java(必备)

下载地址:java.sun.com

B1_ AS(Android Studio,推荐使用)

B2_ Eclipse ADT(Android Development Tools)

下载地址一:www.androiddevtools.cn

下载地址二:tools.android-studio.org

四、Eclipse-ADT 的项目结构



五、JVM 和 DVM 的区别[->ART-Android Runtime(4.4引进,5.0取代 DVM)]

JVM(Java Virtual Machine)DVM(Dalvik Virtual Machine)
JVM 基于堆栈DVM 基于寄存器
通过 Zygote 预加载类完成虚拟机的启动
运行 java 字节码运行 dex 字节码(减少了 class 文件中的冗余信息,DX 工具整合所有 class 文件到一个文件以提高性能,最后将资源文件和 dex 文件等打包成 apk 安装包)
每个 class 文件都有一个 Header(保存了 class 文件的初始信息)apk 文件中的 dex 文件只有一个 Header,所有 class 文件的初始化信息都保存在其中,效率更高
有218个机器指令有200个机器指令(使用等长的指令,提高解析速度)
每个类中都有一个常量池只有一个统一的常量池(打包慢,读取快)
Dalvik 虚拟机主要是完成对象生命周期、堆栈、线程、安全和异常的管理,以及垃圾回收等重要功能

Dalvik 虚拟机适用于内存容量和数据处理能力较小的机器(移动终端)

Dalvik 虚拟机一般包含寄存器地址,所以指令比 java 更长

Dalvik 虚拟机负责进程隔离和线程管理,每一个 Android 应用在底层都会对应一个独立的 Dalvik 虚拟机实例,其代码在虚拟机的解释下得以执行

不同于 Java 虚拟机运行 java 字节码,Dalvik 虚拟机运行的是其专有的文件格式 Dex

dex 文件格式可以减少整体文件尺寸,提高 I/O 操作的类查找速度

odex 是为了在运行过程中进一步提高性能,对 dex 文件的进一步优化

所有的 Android 应用的线程都对应一个 Linux 线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制

有一个特殊的虚拟机进程 Zygote,他是虚拟机实例的孵化器.它在系统启动的时候就会产生,它会完成虚拟机的初始化,库的加载,预制类库和初始化的操作.如果系统需要一个新的虚拟机实例,它会迅速复制自身,以最快的数据提供给系统.对于一些只读的系统库,所有虚拟机实例都和 Zygote 共享一块内存区域

六、DVM 和 ART 虚拟机的区别

Dalvik:应用程序每次运行,字节码都需通过即时编译器转换为机器码,拖慢速度

ART(Android runtime):应用程序第一次安装时,字节码预先编译成机器码(Java 语言翻译成C指令),使其成为真正的本地应用,其启动、执行速度明显提升.弊端即 ART 需要存储 Java 和C两份指令,消耗内存

以上。如有错误和疑问,欢迎指正提出。catface.wyh@gmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: