Android平台基本架构及Dalvik概述

对于Android开发,小编觉得仅仅照着视频或者照着Android疯狂讲义上的例子照搬照抄是不够的,了解、熟悉Android平台的架构及基本原理,相关基本要素的运行机制是极为重要的,这将为从事android长远开发奠定基石作用。所以小编将在后续时间与大家分享小编学习的有关Android原理机制方面的知识,不足或错误的地方请批评指正。

一、Android平台架构

首先请看下面一张图:

相信很多有都看过这张图。通过上面这张图,小编得出的信息如下:

Android平台的架构可以拆分成5个部分。它们分别是Linux内核、Android Runtime、Libraries、Application Framework以及Applications。

下面来一一了解各个部分到底是干嘛的,它们在Android体系中扮演着什么角色。

(一)、Linux Kernel

Linux内核主要是基于Linux2.6来作为核心,利用其基本功能,构建Linux内核来帮助Android系统完成最底层、最核心的功能服务。这些功能主要包括进程管理、安全管理、内存管理、堆栈管理及驱动管理。它主要完成与核心底层硬件的信息交互与处理。在Linux内核中,存在于许多硬件进行交互的驱动程序,如USB Driver、照相机Camera Driver、内部进程通信驱动、蓝牙、无限驱动等。曾经有过一个说法,当把Linux官网上的Linux内核移植到Android平台中会影响Android的运行,这就产生Android下的Linux内核与传统的Linux内核不一致的说法。有学者进行了分析实验,最后得出当把传统的Linux移植到Android中时,会影响手机的触摸屏等操作滞缓,以及一些硬件设备的使用出现一定的差异,最后发现Google在进行Linux开发的时候重写或重新构造了内核的驱动部分,使之与原有的驱动不一样,这些专为手机使用建立的内核驱动才方便手机的运行。所以这里的LInux内核是Google官方专门为手机使用开发的Linux内核,定制了手机专用的驱动程序。

(二)、Android Runtime

所谓的Android运行时,主要包括两部分,第一是Android基本核心库。第二个是Dakvik虚拟机。

其中Android基本核心库用来提供大部分在Java编程中需要使用的基本的核心的功能。第二部分是虚拟机,都知道Android应用程序的运行是基于虚拟机的,但是这里的虚拟机和Java虚拟机是不一致的,具体的差别是Java虚拟机处理的是Java的字节流,而Dalvik虚拟机是在Java字节流的基础上,通过dx工具经过一系列处理,将字节流打包成dex格式的文件,从而让Dalvik虚拟机使用,所以两者的本质是不一样的。在Android应用程序中,每个应用程序在虚拟机内部都是对应一个Dalvik虚拟机实例,有着自己独立运行的线程。而这些线程的管理,都通过Dalvik向Linux内核提供的接口,使得Linux内核可以有效的管理线程安全等因素。

(三)、Libraries

这里的Libraries是Android所包含的C/C++类库,这些类库可以供给Android的各个组件使用。这些类库所具有的功能是通过Android Framework来暴露给开发者的。

这些类可以包括如下:

libc、OpenCORE媒体库、SGL-基于2D图像的引擎、3D库、SurfaceView Manager-界面管理、SQLite–轻量级的关系数据库引擎、SSL–网络传输的安全控制等。

(四)、Application Framework

Framework 的主要功能就是为Android开发者提供一系列用于开发的服务APIs和接口。这些服务及接口包括:

View 丰富的、可扩展的视图集合

Content Provider 使应用程序可以访问其他应用程序的数据、或者使数据可以被共享

Resource Manager 资源管理器。这部分的资源是以非代码的形式、不被编译的方式被访问

Activity Manager 用来管理应用程序的生命周期

Notification 使应用程序可以在状态栏实现自定义的警告。

(五)、Applications

应用程序集合。通过Libraries和Framework开发的应用程序,每个应用程序的构建及运行主要依赖前4个部分。

二、Android平台中的库

该节主要来描述Android应用程序开发时主要会用到的库,了解每个库的具体职能。

(1)、Android util

该库主要用来包括Java中常用的核心功能,包括Java容器、字符串格式化、XML解析等基本功能。

(2)、Android os

提供消息传递、进程间通信等功能

(3)、Android graphic

通过提高图像API,完成低级的绘图功能。

(4)、Andorid text

提高文本处理和解析功能。

(5)、Android database

提供使用数据库的功能。

(6)、Android view

构造用户界面集合,提供与用户的交互行为

(7)、Android Content

内容API,管理数据的发布及访问

(8)、Android provider

为了方便开发人员对某些标注的内容提供器进行访问,该库提供了对所有android发行版中包含的标准数据库的访问、

(9)、telephony、webKit、bluttooth、location

提供对电话薄、网络、蓝牙、GPS的使用访问。

(10) Android Media

提供对媒体数据的访问,如图像、视频、音频。

(11)SSL

用来支持使用安全套接字加密协议的安全Internet通信。

三、什么是Apk文件

Android Apk文件实际上是一个压缩文件。当我们用解压缩工具对其进行解压时,我们可以看到如下的结构目录:

其实从这个图上,我们可以明显感觉到该图和我们进行开发时的工程目录树十分相似。Apk的文件主要组成部分有如下几个:

(1)、Manifest文件

这个XML文件是整个Apk最为核心的文件,它是用来描述整个Apk是什么的。在该文件中,定义了应用程序的名称、图标、权限、sdk使用的最低版本号、以及应用程序所使用的Activiy、service、receiver等子元素。其根元素是只允许唯一存在的applicaion元素。Root标签是manifest标签。因此,整个Manifest.xml文件表述了整个应用程序的全局信息。

(2)、META-INF元数据信息。

变幻原是永恒,我们唯有用永恒的诺言制约世事的变幻。

Android平台基本架构及Dalvik概述

相关文章:

你感兴趣的文章:

标签云: