Android入门【2】-Android系统架构

【概述】

Android操作系统的结构就像一块多层蛋糕,每一层都有各自的口味和特点,每层之间并不是完全独立开的,往往会有互相融合的功能。接下来我们会高屋建瓴式的浏览Android系统的组成。

【Linux】

         Android是基于Linux开发的。Linux本身就是一款伟大的操作系统,并且是开源界的成功范本。Android之所以选择Linux为基础,我想大概是因为Linux具有较好的可移植性、安全性、特色功能。

【可移植性】

Android能够在各种硬件平台上编译,因此它具有可移植性。而这种特性是Linux带来的,因为Linux的底层模块是用移植性较好的C代码实现,这可以让各种设备都能运行Android。

【安全性】

Linux是业界公认的安全操作系统,这点已在工程研究中久经考验,Android高度依赖于Linux的安全性。所有Android应用程序都作为独立Linux进程来执行,并通过Linux为其分配权限。

【特色】

Linux有很多非常有用的特色,Android有效传承并扩展了大部分功能,包括内存管理,电源管理,网络管理等。

【本地代码库】

  Android的本地代码库是C/C++程序库,为Android应用层提供了很多必要的服务,通常来自于开源社区,主要包括:

  WebKit

  一个开源的高性能浏览器引擎,广泛应用于AppleSafari,Google Chrome等浏览器。

  SQLite

一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

  Apache Harmony

Java的开源实现

  OpenGL

3D图形应用库

  OpenSSL

为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。

  Bionic

         Google自行开发的C基础库,Bionic库仅为200KB大小是GNU版本(Linux上的标准C程序库)体积的一半,这意味着更高的效率和低内存占用,同时配合经过优化的Java VM Dalvik才可以保证高的性能。Bionic不支持一些特性比如宽字节对unicode,类似c++那样的异常处理。

【Dalvik】

         Dalvik是Google为Android定制的虚拟机。之所以不用标准JAVA虚拟机,是因为Dalvik对移动设备的耗电、性能等方面有更多考虑;另外一个原因是在2005年,也就是Dalvik创始时, java虚拟机并不是免费的,但是现在Sun公司的JVM已经出现了开源的替代品,即OpenJDK和Apache Harmony项目。

【Android和Java】         

先来看看Java中程序执行过程:


Java源代码首先编译为Java字节码,然后Java虚拟机执行Java字节码,

接下来看看Android应用程序执行过程:


Android程序也是Java语言开发,先通过编译器将Java源代码编译为Java字节码,再将Java字节码编译成Dalvik字节码,然后由Dalvik虚拟机来执行Dalvik字节码。

也许你会疑惑,为什么不直接将Java源代码编译成Dalvik字节码呢,在技术上完全可以做到的,主要原因在于Dalvik启动初期Java语法规范变化很频繁,但Java字节码基本没有什么变化。

传统的Java版本分为JavaSE,JavaEE,JavaME,而Android不是其中任何一个,可以把Android理解为JavaSE的一个子集,但又进行了一些扩充。

【应用编程框架】

Android应用编程框架提供了大量便捷的服务接口,在android开发站点上框架相关的参考文档非常之丰富,使得应用开发人员能顺利完成工作。框架中包含很多java程序库,也包含一些特有的诸如触摸、定位、感应、WIFI、打电话等服务。

【Android应用程序】

Android应用程序是对用户而言最有吸引力的Android产物了,用户可以从各种应用市场下载应用并安装。一个Android应用是一个独立的APK(application pachage)文件,它包含三部分主要信息

1.    Dalvik可执行程序

如前所述,这是有Java字节码编译而来的,是启动Android应用的代码。

2.    资源文件

资源包括代码执行中所需要的视频、音频、XML布局文件、语言包等等。

3.    本地库

Android应用中可以包含C/C++本地代码库,可能是进行一些特殊处理考虑,如提升性能等。

Android应用发布前需要进行签名,不同于iphone独一无二的应用商店模式(其实越狱后还有其他选择^_^),有很多应用商店可以发布Android应用,各自的政策也都有所不同,甚至可以不通过应用商店而直接通过web方式下载APK文件来发布应用,对于应用如何发布,这里就不做过多描述。

【总结】

这一节讲述了Android系统的组成架构,通过对Android各模块的描述,让开发人员感受到一个完整、开发、有吸引力的系统。下一节我会介绍如何搭建Android开发环境,并演示一个Hello World程序的开发。

【附:Android系统架构图】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章