《android应用及应用管理简介》由会员分享,可在线阅读,更多相关《android应用及应用管理简介(9页珍藏版)》请在金锄头文库上搜索。
1、一、概述一、概述 07 年,Google 公司推出了基于 Java 语言的 Android 平台,引起了 IT 业界的一致关注,同年,播思通讯公司开始研发基于其的 OPhone 平台。 08 年,第一款 Android 手机 G1 面世,这款 Google 为 HTC 量身打造的滑盖手机由 T Mobile 发行,获得了用户的极大好评,也为整个 Android 平台的正式商用作出了榜样。 09 年, 将是 OPhone/Android 手机的第一个井喷年, 播思通讯联合中国移动和各个手机厂商即将推出多款触屏手机。同时,Android 社区也日趋壮大,已拥有各种应用五百多个,并在快速增长之中。
2、本文将对 Android 应用结构及 Android 系统的应用管理加以介绍。 本文面对的读者是对 Android 应用的研发人员、或有过 Android 开发经验的入门者。 二、二、Android 应用结构应用结构 什么是什么是 Android 应用?应用? 理解什么是 Android 应用是 Android 入门所必须的,也是了解应用管理的前提。 那什么是 Android 应用呢?即指基于 Android 开发,编译,运行在 Android 平台的应用。这种应用在编译阶段被打成一个 jar 包,以.apk 结尾,包内包含了所有运行阶段需要的代码与资源,其中主要分为三块:描述文件Androi
3、dManifest.xml、代码段和运行时资源。 AndroidManifest.xml AndroidManifest.xml 是 Android 应用的描述文件,它描述了该应用的相关信息,主要包括以下各个元素。 包名包名(package) 指定本应用内 java 主程序包的包名。当没有指定 apk 的文件名时,编译后产生程序包将以此命名。本包名应当在Android 系统运行时唯一。 认证认证(certificate) 指定本应用程序所授予的信任级别,目前有的认证级别有 platform(system)、shared、media 以及应用自定义的认证。不同的认证可以享受不同的权限。 权限组权
4、限组(permission-group) 权限组的定义是为了描述一组具有共同特性的权限。Android 系统中预订了一些组,它们是: android.permission-group.COST_MONEY android.permission-group.MESSAGES android.permission-group.MESSAGES android.permission-group.PERSONAL_INFO android.permission-group.LOCATION android.permission-group.NETWORK android.permission-grou
5、p.ACCOUNTS android.permission-group.HARDWARE_CONTROLS android.permission-group.PHONE_CALLS android.permission-group.SYSTEM_TOOLS android.permission-group.DEVELOPMENT_TOOLS 从字面意思我们就可以理解每个组的特性。具体含义可以参考 SDK 文档。 权限权限(permission) 权限用来描述是否拥有做某件事的权力。Android 系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(si
6、gnature)和系统/签名级别(signature or system)。 系统中所有预定义的权限根据作用的不同,分别属于不同的级别。 对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有 platform 级别的认证才能申请。 当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。 系统应用可以使用任何权限。权限的声明者可无条件使用该权限。 目前 Android 系统定义了许多权限,通过 SDK 文档用户可以查询到哪些操作需要哪些权限,然后按需申请。 权限树权限树(permission-tree) 权限树的设置是为了统
7、一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了 API,应用可以在运行时动态添加。 PackageManager.addPermission() 使用权限使用权限(uses-permission) 应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。 同时,使用权限的申请需要遵循权限授予条件,非 platform 认证的应用无法申请高级权限。 SDK(uses-sdk) 标识本应用运行的 SDK 版本。高兼容性的应用可以忽略此项。 application application 是 Android 应用内最高级别(top level)的模块,
8、每个应用内最多只能有一个 application,如果应用没有指定该模块,一个默认的 application 将被启用。 application 将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成。 Application 元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用当前是否应当被加载。 其它相关属性请参考 SDK 文档,开发者可以根据需要添加。 在 AndroidManifest.xml 文件中,运行时模块的定义都作为本模块的子元素。 当运行时模块被调度时,如果应用没有启动,将首先启动应用进行
9、初始化,然后调度对应模块。 activity activity 是 application 模块的运行时子元素,标识了一个 UI。除了 application,一个应用可以声明并实现零至多个其它运行时模块,activity 也同样。 activity 也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该 activity 所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。 activity 通过增加 intent-fliter 来标识哪些 intent 可以被处理,同时 intent 也是调度 activity 的主要
10、参数。 作为一个运行时的对象,activity 的调度方式大致分为两种:一种是指定 activit 所在类名直接调度,另一种是利用activity 可以处理的 intent 进行调度。 同一种 intent 可以被不同应用的不同 activity 处理。当出现此种情况时,用户需要选择具体的 activity。 receiver receiver 也是 application 的运行时子元素。 receiver 通过增加 intent-fliter 来标识它需要接受哪些 intent。当收到 intent 后,receiver 将根据不同的 intent 进行不同的处理。 当一个 Intent
11、发出后,所有注册了该 intent 的 receiver 都将会收到,系统会根据 receiver 在系统中的注册次序顺序发送。当一个 receiver 处理完该 Intent 后,系统才会向下一个 receiver 发送。 当一个 receiver 有多个未接收的 intent 时,将按照 intent 发送的次序顺序接收。 service service 也是 application 的运行时子元素。Service 属于后台模块,启动后将长时间运行,除非停止该 service 或所在应用进程被杀死。 service 从功能上分为两种,一种是服务于本应用,此时的 service 是一个普通的
12、运行时模块,另一种是服务于所有应用或对应应用,此时需要定义 API 并将之公布来与其它应用进行交互。 service 需要通过 API:startService()添加到 service 管理器中,添加后即在后台运行。它接受外界信息的方式分两种:一种是增加 IntentFilter 来接收 intent,一种是外界应用调用该 service 所定义的 API。 provider provider 也是 application 的运行时子元素。它继承于 ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。 如果应用允许外部应用访问管理它的用户数据,p
13、rovider 是 Android 平台提供的最佳方式。 activity-alias 顾名思义,是已有 activity 的别名。 uses-library 标识应用启动所必须的共享库。 代码段代码段 应用所有的 java 文件被放入一个包结构,该包命名为 classes.dex。 运行时资源运行时资源 Android 应用运行时所需的各种资源有 layout,drawable,string,style 等类型。编译后所有资源统一存放在项目路径/res 里,按照用途的不同存放在各个子文件夹中。 编译阶段,所有 resource 将被排序,每个 resource 在程序包中都拥有唯一的标识,同
14、时一个名为 resources.arsc的文件生成并被置入安装包中, 该文件包含了所有索引以供运行时快速查询。 而 resource 以同样目录结构组织放入安装包中。 应用管理应用管理 应用管理是对系统中所有应用整个生命周期的管理。Android 系统中,应用都是以.apk 文件的形式存在,因此应用管理也可以简单理解为对.apk 文件的管理。 从一个应用在系统中的生命周期来看,应用管理可以分为安装,卸载和使用等部分。 应应用安装用安装 Android 系统中,安装应用时不能指定安装目录,所有的应用都只能装在预置文件夹下。 Android 系统支持数种安装方式,而播思通讯的 Ophone 平台在
15、此基础上支持更多方式。 后台应用(即有后台 UI)前台应用(即有 UI 在前台)。 当应用所在进程被杀掉后,应用重新回到去激活状态。 应用使用的应用使用的 API Android 系统为应用管理功能提供了大量的 API。根据功能的不同,这些 API 分为两大类:PackageManager 相关和 ActivitManager 相关。 PackageManager 相关相关 本类 API 是对所有基于加载信息的数据结构的封装,包括以下功能: 安装,卸载应用 查询 permission 相关信息 查询 Application 相关信息(application,activity,receiver,
16、service,provider 及相应属性等) 查询已安装应用 增加,删除 permission 清除用户数据、缓存,代码段等 非查询相关的 API 需要特定的权限,具体的 API 请参考 SDK 文档。 ActivityManager 相关相关 本类 API 是对运行时管理功能和运行时数据结构的封装,包括以下功能 激活去激活 activity 注册取消注册动态接受 intent 发送取消发送 intent activity 生命周期管理(暂停,恢复,停止,销毁等) activity task 管理(前台后台,后台前台,最近 task 查询,运行时 task 查询) 激活去激活 service 激活去激活 provider 等 task 管理相关 API 需要特定的权限,具体 API 可参考 SDK 文档。 三、总结三、总结 本文实质上是对 Android 相关 API 的理论总结与串联,从总体上介绍应用管理的