<application>
英文原文:http://developer.android.com/guide/topics/manifest/application-element.html
采集(更新)日期:2014-5-30
更新下老的文档,祝贺下自己 42 岁的生日。
搬迁自原博客:http://blog.sina.com.cn/s/blog_48d491300100zmga.html
- 语法:
<application android:allowTaskReparenting=["true" | "false"] android:allowBackup=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "false"] android:description="string resource" android:enabled=["true" | "false"] android:hasCode=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:killAfterRestore=["true" | "false"] android:largeHeap=["true" | "false"] android:label="string resource" android:logo="drawable resource" android:manageSpaceActivity="string" android:name="string" android:permission="string" android:persistent=["true" | "false"] android:process="string" android:restoreAnyVersion=["true" | "false"] android:requiredAccountType="string" android:restrictedAccountType="string" android:supportsRtl=["true" | "false"] android:taskAffinity="string" android:testOnly=["true" | "false"] android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:vmSafeMode=["true" | "false"] > . . .</application>
- 包含于:
<manifest>
- 可包含:
<activity>
<activity-alias>
<meta-data>
<service>
<receiver>
<provider>
<uses-library>
- 说明:
- 对应用程序的声明。本元素包含了声明每个程序组件的子元素,及作用于全部组件的属性。很多属性(比如
icon
、label
、permission
、process
、taskAffinity
和allowTaskReparenting
)设置了组件元素中对应属性的默认值。其他属性(比如debuggable
、enabled
、description
和allowClearUserData
)则设置了应用程序的全局属性值,且不能被组件的属性值覆盖。 - 属性:
android:allowTaskReparenting
- 当具有相同 affinity 名称的 Task 即将返回前台时,应用程序的 Activity 是否能从启动时的 Task 转移至此 Task 中去 — “
true
”表示可以移动,“false
”表示必须留在启动时的 Task 中, 缺省值是“false”。<activity>
元素拥有自己的allowTaskReparenting
属性,它可以覆盖本值。详情请参阅其说明。 android:allowbackup
- 是否允许应用程序参加备份和恢复机制。如果本属性设为 false ,则不会执行应用程序的备份和恢复,即使是在进行全系统的备份时也不会。备份机制将会把应用程序的所有数据都通过 adb 保存下来。本属性的默认值是 true。
android:backupAgent
- 实现应用程序备份代理的类名,这是
BackupAgent
的子类。本属性值应为完全限定的类名(比如“com.example.project.MyBackupAgent”)。不过作为简称,如果名称的首字符是句点(比如“.MyBackupAgent”),则<manifest>
元素中设置的包名称将会自动加到前面。没有默认值,必须指定名称。
android:debuggable
- 应用程序能否被调试,即便是以用户模式运行于设备中时 — “
true
”表示可以,“false
”表示不允许。默认值是“false”。
android:description
- 供用户阅读的应用程序描述信息,比 label 的内容更多也更详细。本属性值必须设为对字符串资源的引用。与 label 不同,本属性不能直接设为字符串。
没有默认值。
android:enabled
- Android 系统能否实例化应用程序中的各组件 — “
true
”表示可以,“false
”表示不允许。如果此值设为“true
”,则由每个组件的enabled
属性确定自身的启用或禁用。如果此值设为“false
”,则覆盖组件的设置值;所有组件都将被禁用。默认值是“true”。
android:hasCode
- 应用程序是否包含代码 — “
true
”表示包含,“false
”表示不包含。如果此值设为“false
”,则在启动组件时系统不会试图装载任何程序代码。默认值是“true”。应用程序不包含任何自有代码的情况极少发生。仅当只用到了内置的组件类时才有可能,比如使用了
AliasActivity
类的 Activity。 android:hardwareAccelerated
- 是否为应用程序中所有的 Activity 和 View 启用硬件加速渲染功能 —“
true
”表示开启,“false
”表示关闭。如果minSdkVersion
或targetSdkVersion
的值大于等于“14”,则本属性默认值是“true
”。否则,默认值为“false
”。自 Android 3.0 (API 级别 11)开始,应用程序可以使用硬件加速的 OpenGL 渲染功能来提高很多常用 2D 图形操作的性能。当开启硬件加速渲染功能时,大部分 Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 中的操作都会被加速。即便应用程序没有显式地调用系统的 OpenGL 库,这仍能使动画更加平滑、屏幕滚动也更加流畅、整体响应速度获得改善。
请注意,并非所有的 OpenGL 2D 操作都会被加速。如果开启了硬件加速渲染功能,请对应用程序进行测试以确保使用渲染时不会出错。
更多信息,请参阅硬件加速指南。
android:icon
- 代表整个应用程序的图标,也即应用程序中每个组件的默认图标。请参阅
<activity>
、<activity-alias>
、<service>
、<receiver>
和<provider>
元素各自的icon
属性。本属性必须设为对 drawable 资源的引用(例如“
@drawable/icon
”)。图标没有默认值。 android:killAfterRestore
- 在执行全系统的恢复操作时,配置恢复后相关的应用程序是否要被终止。单个包的恢复操作不会导致程序被关闭。全系统的恢复操作一般只会发生一次,即第一次配置手机时。第三方应用程序通常不需要用到本属性。
默认值是“
true
”,表示全系统恢复过程中,应用程序在处理完数据后将被关闭。 android:largeHeap
- 应用程序的进程是否会用较大的 Dalvik 堆来创建。这将作用于所有为该应用程序创建的进程,但只对第一个被装入进程的应用程序生效。如果通过共享用户 ID 的方式让多个应用程序公用一个进程,那么这些应用程序必须全部指定本选项,否则将会导致不可预知的后果。
大部分应用程序不需要用到本属性,而是应该关注如何减少内存消耗以提高性能。使用本属性并不能确保一定会增加可用的内存,因为某些设备可用的内存本来就很有限。
要在运行时查询可用的内存大小,请使用
getMemoryClass()
或getLargeMemoryClass()
方法。 android:label
- 供用户阅读的代表整个应用程序的文本标签,也即应用程序中每个组件的默认标签。请参阅
<activity>
、<activity-alias>
、<service>
、<receiver>
和<provider>
元素各自的label
属性。文本标签应设为一个字符串资源的引用,这样就能像其它用户界面内的字符串一样对其进行本地化。不过,考虑到开发时的便利性,也可以将其直接设为字符串。
android:logo
- 整个应用程序的 logo 标识,也即各 Activity 的默认 logo。
本属性必须设为对 drawable 资源的引用,该资源中包含了图片文件(例如“
@drawable/logo
”)。logo 没有默认值。 android:manageSpaceActivity
- 指定某个 Activity 子类的完全限定名称,系统可以启动此 Activity 来让用户管理应用程序占用的内存空间。这个 Activity 必须已用<activity> 元素进行了声明。
android:name
- 实现本应用程序的
Application
子类的完全限定名称。当应用程序开始运行时,此类将先于所有程序组件被初始化。该子类是可选的:大多数应用程序不需要用到。在未提供子类置时,Android 将使用 Application 类的实例。
android:permission
- 客户端要与应用程序交互而必须拥有的权限名称。本属性为一次设置适用于全部程序组件的权限提供了一个便捷途径。它可以被组件各自的
permission
属性覆盖。 android:persistent
- 应用程序是否需要一直保持运行状态 —“
true
”表示是,“false
”表示否。默认值是“false
”。一般情况下,应用程序不应该设置本标志;持久运行模式仅适用于某些特定的系统应用。 android:process
- 应用程序的全部组件都将运行于其中的进程名称。每个组件通过设置各自的
process
属性,可以覆盖本缺省值。默认情况下,当需要运行应用程序的第一个组件时,Android 会为程序创建一个进程。然后所有组件都会运行在这个进程中。默认进程的名称与
<manifest>
元素设置的包名一致。通过将本属性设置为其他应用程序的进程名称,可以让两个应用程序的组件运行于同一个进程中— 但只有这两个程序共享同一个用户 ID 并用同一个证书签名时才行。
如果赋予本属性的名称是以冒号(':')开头的,则必要时将会为应用程序创建一个新的私有进程。如果进程名称以小写字母开头,则将创建以此名称命名的全局进程。全局进程可以被其他应用程序共享,以减少资源的占用。
android:restoreAnyVersion
- 指明应用程序是否将尝试恢复任何备份数据集,即使备份数据的程序版本比当前安装的要新。本属性设为
true
将允许 Backup Manager 尝试恢复操作,即使发生版本冲突也即数据版本不兼容时也是如此。使用本属性时务必小心!本属性的默认值是“
false
”。 android:requiredAccountType
- 设定应用程序所需的账户类型。如果应用程序需要一个
Account
才能运行,本属性值必须与账户的认证类型(由AuthenticatorDescription
定义)吻合,比如“com.google”。默认值是 null ,表示应用程序 不需要 任何账户就可以运行。
因为目前的受限用户配置功能(Restricted Profile)无法添加账户,设定本属性的应用程序对于受限用户而言是不可用的,除非你同时将
android:restrictedAccountType
也声明为相同的值。提醒如果账户数据可能会泄露个人身份信息,声明本属性就很重要了,并且要把
android:restrictedAccountType
设置为 null ,这样受限用户就无法用你的应用程序来访问机主的个人信息了。本属性自 API 级别 18 开始加入。
android:restrictedAccountType
- 设定本应用程序所需的账户类型,并允许受限用户访问机主的该账户。如果应用程序需要使用
Account
并且允许受限用户访问主账户,本属性值必须与应用程序的账户认证类型(由AuthenticatorDescription
定义)吻合,比如“com.google”。默认值为 null ,表示应用程序不需要 任何账户就可以运行。
提醒:设置本属性将允许受限用户通过主账户使用你的应用程序,这可能会泄露个人身份信息。如果账户可能会泄露个人信息,请勿使用本属性,而是使用
android:requiredAccountType
属性,以禁止受限用户的使用。本属性自 API 级别 18 开始加入。
android:supportsRtl
- 声明应用程序是否要支持自右向左(RTL)布局(Layout)。
如果本属性设为
true
并且targetSdkVersion
为 17 以上版本,则系统将会激活并使用各种 RTL API ,应用程序就可以显示 RTL Layout。如果本属性设为false
或者targetSdkVersion
为 16 以下版本,则 RTL API 将会被忽略或失效,应用程序将忽略与 Layout 方向有关的用户本地化选项(Layout 都将从左到右布局)。本属性的默认值是
false
。本属性自 API 级别 17 开始加入。
android:taskAffinity
- 供应用程序中全部 Activity 使用的 affinity 名称,那些在各自的
taskAffinity
属性中设置了其他 affinity 的 Activity 除外。详情请参阅 Activity 的 affinity 属性。默认情况下,应用程序中的所有 Activity 都共享同一个 affinity 。affinity 的名称与
<manifest>
元素中设置的包名称相同。 android:testOnly
- 标明本应用程序是否仅供测试。比如,本应用程序可能会暴露一些不属于自己的功能或数据,这将引发安全漏洞,但对测试而言这又非常有用。这种应用程序只能通过 adb 进行安装。
android:theme
- 对样式(style)资源的引用,该资源定义了应用程序内所有 Activity 的默认主题(theme)。每个 Activity 可以用各自的
theme
属性覆盖默认主题。详情请参阅开发指南的样式和主题。 android:uiOptions
- 供 Activity UI 使用的附加选项。
必须设为以下值之一。
值 说明 "none"
没有附加 UI 选项。这是默认值。 "splitActionBarWhenNarrow"
当横向空间受限时(比如设备处于纵向模式时),在屏幕底部添加一横条,用于显示 ActionBar
中的 Action 项。这时不再是在屏幕顶部的 ActionBar 中显示有限的几个 Action 项了,ActionBar 拆分为顶部导航栏和底部横条。这就确保了合理的可用空间,不仅可以容纳 Action 项,还可以在顶部显示导航和标题。菜单项不会被拆分为两部分,还是会放在一起显示。关于 ActionBar 的更多信息,请参阅Action Bar 开发指南。
本属性自 API 级别 14 开始加入。
android:vmSafeMode
- 标明应用程序是否期望虚拟机(VM)运行于安全模式。默认值是“
false
”。
- 引入自:
- API 级别 1
- 参阅:
<activity>
<service>
<receiver>
<provider>