android程序层次结构图,专家专栏:Android层次化安全架构及核心组

Android

品位化

安然架构

Android作为一个挪移

设施的平台,其软件

品位

构造包括了一个操作系统(OS),中间件(MiddleWare)和

利用程序(Application)  。依据Android的软件框图,其软件

品位

构造自下而上分为以下几个

品位:

操作系统层(OS)

各种库(Libraries)和Android 运行环境(RunTime)

利用程序框架(ApplicationFramework)

利用程序(Application)

以下

别离介绍Android各个

品位的软件的重点及其

有关技术:

(1)操作系统层(OS)

Android

使用Linux 2.6作为操作系统,Linux 2.6是一种

标准的技术,Linux也是一个开放的操作系统  。Android对操作系统的

使用包括核心和驱动程序两

部分,Android的Linux核心为

标准的Linux 2.6内核,Android更多的是需求一些与挪移

设施

有关的驱动程序  。重要的驱动如下所示:

显示驱动(DisplayDriver):常用基于Linux的帧缓冲(Frame Buffer)驱动

Flash内存驱动(FlashMemory Driver)

照相机驱动(CameraDriver):常用基于Linux的v4l(Video for)驱动  。

音频驱动(AudioDriver):常用基于A(Advanced Linux Sound Architecture,高级Linux声音体系)驱动

WiFi驱动(CameraDriver):基于IEEE 802.11

标准的驱动程序

键盘驱动(KeyBoardDriver)

蓝牙驱动(BluetoothDriver)

BinderIPC驱动:Andoid一个特别的驱动程序,

存在

径自的

设施节点,提供

历程间通信的

性能  。

PowerManagement(能源治理)

( 2)各种库(Libraries)和Android 运行环境(RunTime)

品位对应普通嵌入式系统,相当于中间件

品位  。Android的本

品位分成两个

部分一个是各种库,另一个是Android 运行环境  。本层的内容大多是

使用C++实现的  。 在其中,各种库包括:

C库:的

标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现  。

多媒体框架(MediaFrameword):这

部分内容是Android多媒体的核心

部分,基于PacketVideo(即PV)的OpenCORE,从

性能上本库一共分为两大

部分,一个

部分是音频、视频的回放(PlayBack),另一

部分是则是音视频的纪录(Recorder)  。

SGL:2D图像引擎  。

SSL:即SecureSocket Layer位于TCP/IP

协定与各种

利用层

协定中间,为数据通信提供

安然

支撑  。

OpenGL ES 1.0 :本

部分提供了对3D的

支撑  。

界面治理工具(Surface Management):本

部分提供了对治理显示子系统等

性能  。

SQLite:一个通用的嵌入式数据库

WebKit:网络阅读器的核心

FreeType:位图和矢量字体的

性能  。

Android 的各种库普通是以系统中间件的

模式提供的,它们均有的一个卓著特色便是与挪移

设施的平台的

利用紧密

有关  。 Android 运行环境重要指的

虚构机技术——Dalvik  。Dalvik

虚构机和普通Java

虚构机(Java VM)不同,它执行的不是Java

标准的字节码(bytecode )而是Dalvik可执行

格局(.dex)中执行文件  。在执行的过程中,每一个

利用程序即一个

历程(Linux的一个Process)  。 二者最大的区别在于Java VM是以基于栈的

虚构机(Stack-based),而Dalvik是基于

存放器的

虚构机(Register-based)  。显然,后者最大的

好处在于

可以依据硬件实现更大的优化,这更

合适挪移

设施的特色  。

(3)

利用程序框架(ApplicationFramework)

Android的

利用程序框架为

利用程序层的开发者提供APIs,它实际上是一个

利用程序的框架  。由于上层的

利用程序是以JAVA构建的,

因此本

品位提供的首先包括了UI程序中所需求的各种控件:例如: Views (视图组件)包括 lists(列表), grids(栅格), textboxes(文本框), buttons(按钮)等,甚至一个嵌入式的Web阅读器  。一个Android的

利用程序

可以利用

利用程序框架中的以下几个

部分: Activity(

运动)、Broadcast IntentReceiver (

播送

用意

接纳者)、Service (服务)、Content Provider (内容提供者)  。

(4)

利用程序(Application)

Android的

利用程序重要是消费者界面(UserInterface),通常以JAVA程序编写,其中还

可以包括各种资源文件(

搁置在res目录中)  。JAVA程序及

有关资源

通过编译后,将生成一个APK包  。Android

本身提供了主屏幕(Home),

联络人(Contact),电话(Phone),阅读器(Browsers)等众多的核心

利用  。同时

利用程序的开发者还

可以

使用

利用程序框架层的API实现自己的程序  。

20128161837.jpg

图1 Android分层

安然架构图

Android的组件模型(ComponentModel)

Android系统中包括如下4种组件:

(1)Activity

Activity便是一个界面,这个界面里面

可以

搁置各种控件  。例如:TaskManager的界面、Root Explorer的界面等;Activity是为消费者操作而

展示的可视化消费者界面  。例如说,一个activity

可以

展示一个菜单项列表供消费者

取舍,或者显示一些包括

注明的照片  。一个短

信息

利用程序

可以包括一个用于显示做为发送对象的

联络人的列表的activity,一个给选定的

联络人写短信的activity以及翻阅以往的短信和转变设置的activity  。

只管它们一同组成了一个内聚的消费者界面,但其中每个activity都与其它的

维持独立  。每个都是以Activity类为基类的子类实现  。

一个

利用程序

可以惟独一个activity,或者,如

方才提到的短信

利用程序那样,包括众多个  。而每个activity的作用以及其数目,自然取决于

利用程序及其设计  。普通状况下,总有一个

利用程序被标记为消费者在

利用程序启动的时候第一个看到的  。从一个activity转向另一个的

模式是靠目前的activity启动下一个  。

每个activity都被赋予一个默许的窗口以进行绘制  。普通状况下,这个窗口是满屏的,但它也

可以是一个小的位于其它窗口之上的浮动窗口  。一个activity也

可以

使用超过一个的窗口  。例如,在activity运行过程中弹出的一个供消费者

反响的小对话框,或是当消费者

取舍了屏幕上特定

名目后显示的必要信息  。

窗口显示的可视内容是由一系列视图组成的,这些视图均继承自View 基类  。每个视图均操纵着窗口中一块特定的矩形空间  。父级视图包括并组织它子视图的布局  。叶节点视图(位于视图

品位最底端)在它们操纵的矩形中进行绘制,并对消费者对其直接操作做出响应  。所以,视图是activity与消费者进行交互的界面  。例如说,视图

可以显示一个小图片,并在消费者

指导它的时候产

活泼作  。Android有众多既定的视图供消费者直接

使用,包括按钮、文本域、卷轴、菜单项、复选框等等  。

(2)Service

服务是运行在

后盾的

性能模块  。如文件下载、音乐播放程序等;服务没有可视化的消费者界面,而是在一段

工夫内在

后盾运行  。例如说,一个服务

可以在消费者做其它

事件的时候在

后盾播放背景音乐、从网络上猎取一些数据或者计算一些东西并提供应需求这个运算

后果的activity

使用  。每个服务都继承自Service基类  。

一个媒体播放器播放播放列表中的曲目是一个不错的例子  。播放器

利用程序可能有一个或多个activity来给消费者

取舍歌曲并进行播放  。但是,音乐播放这个

使命

本身不应该为任何activity所

解决,由于消费者

期冀在他们离开播放器

利用程序而开始做别的

事件时,音乐仍在

接续播放  。为达到这个

目标,媒体播放器activity应该启用一个运行于

后盾的服务  。而系统将在这个activity不再显示于屏幕之后,仍维持音乐播放服务的运行  。

可以衔接至(绑定)一个正在运行的服务(假如服务没有运行,则启动之)  。衔接之后,

可以通过那个服务

袒露出来的接口与服务进行通信  。关于音乐服务来说,这个接口

可以同意消费者暂停、回退、

停留以及再一次开始播放  。

(3)ContentProvider

它是Android平台

利用程序间数据共享的一种

标准接口,它以

类似于URI(UniversalResources Identification)的

模式来

示意数据,如:content://contacts/people/1101;内容提供者将一些特定的

利用程序数据供应其它

利用程序

使用  。数据

可以存储于文件系统、SQLite数据库或其它

模式  。内容提供者继承于ContentProvider 基类,为其它

利用程序取用和存储它治理的数据实现了一套

标准

步骤  。但是,

利用程序并不直接调用这些

步骤,而是

使用一个ContentResolver 对象,调用它的

步骤作为

代替  。ContentResolver

可以与任意内容提供者进行会话,与其合作来对全部

有关交互通信进行治理  。

(4)BroadcastReceiver

Broadcast Receiver是一个

专一于

接纳

播送

告诉信息,并做出对应

解决的组件  。众多

播送是源自于系统代码的  。例如,

告诉时区转变、电池电量低、拍摄了一张照片或者消费者转变了语言选项  。

利用程序也

可以进行

播送,例如

告诉其它

利用程序一些数据下载

实现并处于可用状态  。

利用程序

可以

占有任意数量的Broadcast Receiver以对全部它有兴趣的

告诉信息予以响应  。全部的

接纳器均继承自BroadcastReceiver基类  。Broadcast Receiver没有消费者界面  。但是,它们

可以启动一个activity来响应它们收到的信息,或者用NotificationManager来

告诉消费者  。

告诉

可以用众多种

模式来吸

援消费者的

留神力──闪动背灯、

震撼、播放声音等等  。普通来说是在状态栏上放一个

长久的图标,消费者

可以

打开它并猎

取缔息  。

与此组件

有关的概念是Intent,Intent是一个对动作和行为的

形象

形容,负责组件中间程序中间进行

信息传递  。而BroadcastReceiver组件则提供了一种把Intent作为一个

信息

播送出去,由全部对其有兴趣的程序对其作出

反响的机制  。举个

方便的例子,为了实现一个系统启动后播放音乐的

性能,则

可以定义Intent为android.intent.action.BOOT_COMPLETED,由BroadcastReceiver组件将其进行

播送,而系统中的Media Player

接纳到该信息后则进行播放  。

如上所述,4个组件中间的关系如下图:

20128161770.jpg

图2 Android各组件关系图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值