LeoYan Blog

技术分享,生活记录。

0%

Android 清单文件之 Application 标签详解

转载请注明出处:www.leoyanblog.com

本文出自 LeoYan 的博客

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 LeoYan 即可关注。

Application:属性

一个AndroidManifest.xml中必须含有一个Application标签,这个标签声明了每一个应用程序的组件及其属性(如icon,label,permission等)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<application
android:allowClearUserData = ["true" | "false"]
android:allowTaskReparenting = ["true" | "false"]
android:backupAgent = "string"
android:debuggable = ["true" | "false"]
android:description = "string resource"
android:enabled = ["true" | "false"]
android:hasCode = ["true" | "false"]
android:icon = "drawable resource"
android:killAfterRestore = ["true" | "false"]
android:label = "string resource"
android:manageSpaceActivity = "string"
android:name = "string"
android:permission = "string"
android:persistent = ["true" | "false"]
android:process = "string"
android:restoreAnyVersion = ["true" | "false"]
android:taskAffinity = "string"
android:theme = "resource or theme" >
</application>

A、allowClearUserData

android:allowClearUserData (‘true’ or ‘false’)

用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。当为true时,用户可自己清理用户数据,反之亦然

B、allowTaskReparenting

android:allowTaskReparenting (‘true’ or ‘false’)

是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务

C、backupAgent

android:backupAgent (string)

这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)

D、debuggable

android:debuggable (‘true’ or ‘false’)

这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在手机上可以被调试。默认为false,在false的情况下调试该APP,就会报以下错误:

Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.

Application XXX does not have the attribute ‘debuggable’ set to TRUE in its manifest and cannot be debugged.

E、label / description

android:label (string)

android:description (string)

此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生

F、enabled

android:enabled (‘true’ or ‘false’)

Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled。

G、hasCode

android:hasCode (‘true’ or ‘false’)

表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码

一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象

(在Android2.3可以用标准C来开发应用程序,可在androidManifest.xml中将此属性设置为false,因为这个APP本身已经不含有任何的JAVA代码了)

H、icon

android:icon (drawable resource)

这个很简单,就是声明整个APP的图标,图片一般都放在drawable文件夹下

I、killAfterRestore

android:killAfterRestore (‘true’ or ‘false’)

J、manageSpaceActivity

android:manageSpaceActivity (string)

K、name

android:name (string)

为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

若该类(比方androidMain类)是在声明的package下,则可以直接声明android:name=”androidMain”,但此类是在package下面的子包的话,就必须声明为全路径或android:name=”package名称.子包名成.androidMain”

L、permission

android:permission (string)

设置许可名,这个属性若在上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的

M、presistent

android:presistent (‘true’ or ‘false’)

该应用程序是否应该在任何时候都保持运行状态,默认为false。因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。

N、process

android:process (string)

应用程序运行的进程名,它的默认值为元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。如果你想两个应用程序共用一个进程的话,你可以设置他们的android:process相同,但前提条件是他们共享一个用户ID及被赋予了相同证书的时候

O、restoreAnyVersion

android:restoreAnyVersion (‘true’ or ‘false’)

同样也是android2.2的一个新特性,用来表明应用是否准备尝试恢复所有的备份,甚至该备份是比当前设备上更要新的版本,默认是false

P、taskAffinity

android:taskAffinity (string)

拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是元素中设定的package名

Q、theme

android:theme (resource or theme)

是一个资源的风格,它定义了一个默认的主题风格给所有的activity,当然也可以在自己的theme里面去设置它,有点类似style。