Android体系

  • Linux层
    Linux层包含了Android系统的核心服务,包括硬件驱动、进程管理、安全系统等。
  • Dalvik与ART
    Dalvik的特点是在运行时编译。在Android5.0以上,ART已经取代了Dalvik,ART采用的是安装时就进行编译。

Dalvik虚拟机是Goolge等厂商合作开发的Android移动设备平台的核心组成部分之一,它可以支持已转换为.dex(即Dalvik Executable)格式的java应用的程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存核处理器速度有限的系统。Dalvik经过优化后,允许有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用作为一个独立的Linux进程执行,独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。
——http://www.icoding.net/dalvik-and-art.html

Dalvik依靠一个Just-In-Time(JIT) 编译器去向硬件“解释” App 字节码,代码和硬件打交道时平白无故多出一个解释过程,显而易见,这种方式并不能直接调用底层的硬件,而是通过了一个中间介绍人来让 App 运行,这就是为什么搭载 Android 系统的手机相比 iPhone 来说耗电快,软件占内存大,卡顿严重。从而 Dalvik 被看作安卓运行效率低下的“毒瘤”。当然,Dalvik 虚拟机让应用能更容易在不同硬件和架构上运行,是安卓系统普及的功臣。
新的 ART 则完全改变了 Dalvik 这套做法,其处理应用程序执行的方式完全不同于 Dalvik,在应用安装时,ART 就直接把代码预编译成机器语言,这一机制叫 Ahead-Of-Time (AOT)编译。和 Dalvik 相比,经过 ART 编译后的应用从根本上省略了解释字节码这个过程,运行起来更有效率、耗电更少、占的内存也更低。当然,预编译也带来了两个问题,一个是应用占用的存储空间将会更大,另一个是这个过程也会让应用安装耗时更长。
—— http://www.geekpark.net/topics/193134

ART相对Dalvik的优点:

  • 系统性能提升
  • 启动应用更快,运行更快、体验更流畅
  • 更长的电池续航能力
  • 支持更低的硬件

缺点:

  • 更大的存储空间占用
  • 更长的应用安装时间

NDK与SDK的区别

  • 原生开发工具包(英语:native development kit,简称NDK)是一种基于原生程序接口的软件开发工具。通过此工具开发的程序直接以本地语言运行,而非虚拟机。因此只有java等基于虚拟机运行的语言的程序才会有原生开发工具包。
  • 由于基于虚拟机的语言在运行上比基于C语言或c++的效率低,因此通过NDK编译的原生程序不仅可以在特定的环境下工作,且能维持运行的高效率。并且通常只要硬件允许,NDK可以兼容任何C语言的库,因此在功能上弥补了一些SDK开发的不足。
  • 基于java的软件NDK通过JNI进行调度,由于java语言支持调用C/C++动态链接库,因此可以令java 的程序执行部分C语言代码,这为NDK的使用提供了可能。
  • 软件开发工具包(Software Development Kit, SDK)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合。
    它或许只是简单的为某个程序设计语言提供应用程序接口的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
    ——Wikipedia

更多相关文章

  1. Android应用程序消息处理机制(Looper、Handler)分析
  2. android初探
  3. Android(安卓)多语言动态切换
  4. Android自学笔记-1-android运行时Dalvik和art简单介绍
  5. Android系列教程之四:Android项目的目录结构
  6. Android(安卓)SystemUI (导入到Eclipse,可以正常运行)
  7. Android和Java的区别
  8. Android应用程序四大组件
  9. Android:开发自己的Launcher简单demo

随机推荐

  1. Android(安卓)通讯录学习笔记之——目标:
  2. android官方技术文档翻译——工具属性
  3. 穿针引线,帮你回忆, 汇总:Android系统启动流
  4. Android opencv(三) 边缘检测Sobel、Cann
  5. WindowsPhone下拉刷新控件 - PullRefresh
  6. Android中实现下载和解压zip文件功能代码
  7. Files to be needed by importing the an
  8. Android中dip(dp)和pix互相转化
  9. Android中通过getSystemService取得服务
  10. 【备忘】2016最新独家老罗Android视频教