Android学习(2) -- 体系结构

来源:互联网 发布:ubuntu 退出vi编辑器 编辑:程序博客网 时间:2024/06/04 18:19


Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。

Linux内核层

底部是Linux内核,Android系统建立在Linux内核上,提供类似进程管理,内存管理,摄像头,键盘设备管理,显示器等基本系统功能。同样包括网络和设备驱动。

作为基础移动计算环境下,Linux内核提供了对Android有几个关键的安全功能,包括:

一个基于用户的权限模型;

进程隔离;

可扩展的机制,安全的IPC;

去除内核不必要的和潜在的不安全部件的能力。

作为一个多用户操作系统,Linux内核的一个基本的安全目标是彼此隔离用户的资源,因此Linux内核会:

阻止用户A读取用户B的文件;

确保用户A不会耗尽B的内存、CPU、设备(电话、GPS、蓝牙等)。

硬件抽象层

硬件抽象层提供程序访问硬件资源的能力。

Android Runtime、Dalvik和第三方库文件,图示的库都非常必要,如Webkit用于浏览网页,SQLite用于维护数据库等。

Dalvik虚拟机,Android的开源项目,旨在执行申请Android.Each应用程序运行写在Android设备有自己的Dalvik虚拟机。

Android Runtime (ART)是Google Android平台上新的Java运行时环境,是Dalvik VM的替代品。它从Android 4.4(Kitkat)开始发布测试版,在Android5.0 (Lolipop)正式替代Dalvik VM。它的主要特点是有事先编译(Ahead-of-Timecompilation,简称AOT编译)功能,可以在安装APK或者动态加载DEX文件时将其中的Java方法编译为本地代码,运行程序的时候不需要再做JIT编译。


应用程序框架层

应用程序框架层中的Java类的应用提供了许多更高级别的服务。应用程序开发人员被允许在他们的应用程序使用这些服务。


Android应用层

应用分为2类:预装应用/system/app,用户安装应用/data/app,Android使用签名机制阻止未经授权的应用更新。

安装应用程序基本结构


AndroidManifest.xml:该文件是控制文件,告诉系统如何处理应用顶级的组件(specifically activities, services, broadcast receivers, and contentproviders described below)。该文件还指定应用所需的权限,该文件在android里是二进制文件,不过可以使用apktool或androguard转换为可读的明文XML文件。

META-INF目录:包括

MANIFEST.MF:清单文件

CERT.RSA:应用程序的证书。

CERT.SF:资源在MANIFEST.MF文件中的相应行的名单和SHA-1的摘要

Lib:包含编译代码特定于处理器或软件层的目录,该目录被分成在其内多个目录:

armeabi:只为所有基于ARM的处理器编译代码

armeabi-V7A:只为所有ARMv7及更高版本的处理器编译代码

86:编译代码为X86

MIPS:只有MIPS处理器编译代码

Res:包含未编译resources.arsc的资源目录。

Assects:包含可以被AssetManager恢复的应用资产。

Classes.dex:包含可以被Dalvik虚拟机执行的二进制文件。

resources.arsc:包含预编译资源的目录,如二进制xml。

主要应用组件:

应用程序组件是一个Android应用程序的重要基础,每个组件都是系统进入APP的切入点。

AndroidManifest.xml

所有应用都包含的文件,这个文件的内容包括:

l  唯一的应用包名及版本信息;

l  Activity、Service、BroadcastReceiver和插桩定义;

l  权限定义,包括应用请求的权限和应用自定义的权限;

l  关于应用使用并一起打包的外部程序库信息;

l  其他支持性的指令,如共用的UID信息,首选安装位置和UI信息。

Manifest文件经常由开发环境自动产生,在构建过程中由明文XML文件转换为二进制XML文件。

Intent

Intent是一种消息对象,包含一个要执行操作的相关信息,可选的将执行操作的目标组件信息,以及其他一些对接受方可能非常关键的标志位信息或支持性信息。几乎所有动作都都涉及在系统中传递Intent。

Activity

面向用户的应用组件或应用界面,底层是由Activity管理服务的组建进行处理的。

Broadcast Receiver

通常应用希望接受一个匹配特定标准的隐式Intent时出现。broadcast receiver是响应全系统广播通知的部分,如发起屏幕开启或关闭、电池电量低、拍照等,应用程序也可以发起广播,如向其他程序发送数据已经准备好的广播,广播也可以创建一个通知栏状态告知用户。

Service

一类在后台运行无需用户界面的应用组件,Service必须在Manifest文件中声明。Service的启动、停止、绑定由Intent触发。

ContentProvider

为各种通用、共享的数据存储提供结构化的访问接口,存储的数据可以放在SQLite、Web、或其他应用可以访问的存储位置,其他的应用可以查询甚至修改content provider的数据。


0 0
原创粉丝点击