<application>

语法
<application android:allowTaskReparenting=["true" | "false"]
             android:allowBackup=["true" | "false"]
             android:allowClearUserData=["true" | "false"]
             android:allowCrossUidActivitySwitchFromBelow=["true" | "false"]
             android:allowNativeHeapPointerTagging=["true" | "false"]
             android:appCategory=["accessibility" | "audio" | "game" |
             "image" | "maps" | "news" | "productivity" | "social" | "video"]
             android:backupAgent="string"
             android:backupInForeground=["true" | "false"]
             android:banner="drawable resource"
             android:dataExtractionRules="string resource"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:extractNativeLibs=["true" | "false"]
             android:fullBackupContent="string"
             android:fullBackupOnly=["true" | "false"]
             android:gwpAsanMode=["always" | "never"]
             android:hasCode=["true" | "false"]
             android:hasFragileUserData=["true" | "false"]
             android:hardwareAccelerated=["true" | "false"]
             android:icon="drawable resource"
             android:isGame=["true" | "false"]
             android:isMonitoringTool=["parental_control" | "enterprise_management" |
             "other"]
             android:killAfterRestore=["true" | "false"]
             android:largeHeap=["true" | "false"]
             android:label="string resource"
             android:logo="drawable resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:networkSecurityConfig="xml resource"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:requestLegacyExternalStorage=["true" | "false"]
             android:requiredAccountType="string"
             android:resizeableActivity=["true" | "false"]
             android:restrictedAccountType="string"
             android:supportsRtl=["true" | "false"]
             android:taskAffinity="string"
             android:testOnly=["true" | "false"]
             android:theme="resource or theme"
             android:uiOptions=["none" | "splitActionBarWhenNarrow"]
             android:usesCleartextTraffic=["true" | "false"]
             android:vmSafeMode=["true" | "false"] >
    . . .
</application>
包含在
<manifest>
可以包含
<activity>
<activity-alias>
<meta-data>
<service>
<receiver>
<profileable>
<provider>
<uses-library>
<uses-native-library>
说明

应用程序的声明。此元素包含声明应用程序每个组件的子元素,以及可以影响所有组件的属性。

许多这些属性,如 iconlabelpermissionprocesstaskAffinityallowTaskReparenting,为组件元素的对应属性设置默认值。其他属性,如 debuggableenableddescriptionallowClearUserData,为整个应用程序设置值,不会被组件覆盖。

属性
android:allowTaskReparenting
应用程序定义的活动是否可以从启动它们的任務移动到它们具有关联性的任務中,当该任務下次被调到前台时。如果可以移动,则为 "true";如果必须保留在启动它们的任務中,则为 "false"。默认值为 "false"

The <activity> 元素有自己的 allowTaskReparenting 属性,可以覆盖此处设置的值。

android:allowBackup

是否让应用程序参与备份和恢复基础设施。如果将此属性设置为 "false",则永远不会执行应用程序的备份或恢复,即使通过完全系统备份(否则会导致所有应用程序数据使用 adb 保存)。此属性的默认值为 "true"

注意:对于面向 Android 12(API 级别 31)或更高版本的应用,此行为有所不同。在某些设备制造商的设备上,您无法禁用应用程序文件的设备到设备迁移。

但是,即使您的应用程序面向 Android 12(API 级别 31)或更高版本,您也可以通过将此属性设置为 "false" 来禁用基于云的应用程序文件的备份和恢复。

有关更多信息,请参见描述面向 Android 12(API 级别 31)或更高版本的应用程序行为更改的页面中的 备份和恢复 部分。

android:allowClearUserData

是否让应用程序重置用户数据。此数据包括标志(例如,用户是否已看到介绍性工具提示),以及用户可自定义的设置和首选项。此属性的默认值为 "true"

注意:只有系统映像的一部分的应用程序才能显式声明此属性。第三方应用程序无法在其清单文件中包含此属性。

有关更多信息,请参见 数据备份概述

android:allowCrossUidActivitySwitchFromBelow

指定任务中此活动下方的活动是否也可以启动其他活动或完成任务。

从目标 SDK 级别 Build.VERSION_CODES.VANILLA_ICE_CREAM 开始,出于安全原因,应用程序可能被阻止启动新活动或完成其任务,除非此类任务的顶部活动属于相同的 UID。

如果将此标志设置为 true,则如果此活动处于顶部,则启动应用程序将忽略该限制。与此活动 UID 相匹配的应用程序始终免除。

有关更多信息,请参见 安全的后台活动启动

android:allowNativeHeapPointerTagging

应用程序是否启用堆指针标记功能。此属性的默认值为 "true"

注意:禁用此功能不会解决底层代码健康问题。未来的硬件设备可能不支持此清单标记。

有关更多信息,请参见 标记的指针

android:appCategory

声明此应用程序的类别。类别用于将多个应用程序聚集成有意义的组,例如,在汇总电池、网络或磁盘使用情况时。只为适合特定类别的应用程序定义此值。

必须是以下常量值之一。

描述
accessibility主要是辅助功能应用程序的应用程序,例如屏幕阅读器。
audio主要处理音频或音乐的应用程序,例如音乐播放器。
game主要是游戏的应用程序。
image主要处理图像或照片的应用程序,例如相机或图库应用程序。
maps主要是地图应用程序的应用程序,例如导航应用程序。
news主要是新闻应用程序的应用程序,例如报纸、杂志或体育应用程序。
productivity主要是生产力应用程序的应用程序,例如云存储或工作场所应用程序。
social主要是社交应用程序的应用程序,例如消息传递、通信、电子邮件或社交网络应用程序。
video主要处理视频或电影的应用程序,例如流媒体视频应用程序。

android:backupAgent
实现应用程序备份代理(BackupAgent 的子类)的类的名称。属性值是完全限定的类名,例如 "com.example.project.MyBackupAgent"。但是,作为一种简写,如果名称的第一个字符是句点,例如 ".MyBackupAgent",则将其附加到 <manifest> 元素中指定的包名。

没有默认值。名称必须是特定的。

android:backupInForeground
指示即使应用程序处于等效于前台的状态,也可以对该应用程序执行 自动备份 操作。系统在自动备份操作期间会关闭应用程序,因此请谨慎使用此属性。将此标志设置为 "true" 会影响应用程序处于活动状态时的行为。

默认值为 "false",这意味着操作系统会避免在应用程序在前台运行时备份应用程序,例如使用 startForeground() 状态中的服务主动播放音乐的音乐应用程序。

android:banner
一个 可绘制资源,为其关联的项目提供扩展的图形横幅。与 <application> 标记一起使用,为所有应用程序活动提供默认横幅,或与 <activity> 标记一起使用,为特定活动提供横幅。

系统使用横幅在 Android TV 主屏幕中表示应用程序。因此,仅为处理 CATEGORY_LEANBACK_LAUNCHER 意图的应用程序指定此项。

此属性设置为对包含图像的可绘制资源的引用,例如 "@drawable/banner"。没有默认横幅。

有关更多信息,请参见 提供主屏幕横幅

android:dataExtractionRules

应用程序可以将此属性设置为 XML 资源,在其中指定确定可以从设备复制哪些文件和目录的规则,作为备份或传输操作的一部分。

有关 XML 文件格式的信息,请参见 备份和恢复

android:debuggable
应用程序是否可以调试,即使在设备处于用户模式下运行。如果可以,则为 "true",否则为 "false"。默认值为 "false"
android:description
有关应用程序的用户可读文本,它比应用程序标签更长,更具描述性。该值设置为对字符串资源的引用。与标签不同,它不能是原始字符串。没有默认值。
android:enabled
Android 系统是否可以实例化应用程序的组件。如果可以,则为 "true",否则为 "false"。如果值为 "true",则每个组件的 enabled 属性决定该组件是否启用。如果值为 "false",则会覆盖特定于组件的值,并且所有组件都将被禁用。

默认值为 "true"

android:extractNativeLibs

从 AGP 4.2.0 开始,DSL 选项 useLegacyPackaging 替换了 extractNativeLibs 清单属性。在您的应用程序的 build.gradle 文件中使用 useLegacyPackaging 而不是在清单文件中使用 extractNativeLibs 来配置本机库压缩行为。有关更多信息,请参见发行说明 使用 DSL 打包压缩的本机库

此属性指示包安装程序是否将本机库从 APK 提取到文件系统。如果设置为 "false",则您的本机库将以未压缩的方式存储在 APK 中。虽然您的 APK 可能更大,但您的应用程序加载速度更快,因为库在运行时直接从 APK 加载。

extractNativeLibs 的默认值取决于您使用的 minSdkVersion 和 AGP 版本。在大多数情况下,默认行为可能就是您想要的,您不必显式设置此属性。

android:fullBackupContent
此属性指向包含 自动备份 的完整备份规则的 XML 文件。这些规则确定备份哪些文件。有关更多信息,请参见 XML 配置语法 的自动备份。

此属性是可选的。如果没有指定,默认情况下,自动备份将包含您应用程序的大多数文件。有关更多信息,请参见 备份的文件

android:fullBackupOnly
此属性指示是否在支持 自动备份 的设备上使用它。如果设置为 "true",则您的应用程序在安装在运行 Android 6.0(API 级别 23)或更高版本的设备上时会执行自动备份。在较旧的设备上,您的应用程序会忽略此属性并执行 键/值备份

默认值为 "false"

android:gwpAsanMode
此属性指示是否使用 GWP-ASan,这是一种本机内存分配器功能,有助于查找使用后释放和堆缓冲区溢出错误。

默认值为 "never"

android:hasCode
应用程序是否包含任何 DEX 代码,即使用 Kotlin 或 Java 编程语言的代码。如果包含,则为 "true",否则为 "false"。当值为 "false" 时,系统在启动组件时不会尝试加载任何应用程序代码。默认值为 "true"

如果应用程序包含本机(C/C++)代码,但不包含 DEX 代码,则应将其设置为 "false"。如果 APK 不包含 DEX 代码,则将其设置为 "true",应用程序可能无法加载。

此属性必须考虑依赖项在应用程序中包含的代码。 如果应用程序依赖于使用 Java/Kotlin 代码的 AAR,或直接依赖于 JAR,app:hasCode 必须为 "true" 或省略,因为这是默认值。

例如,您的应用可能支持 Play 功能交付 并包含不生成任何 DEX 文件的功能模块,这些模块是针对 Android 平台优化的字节码。如果是这样,您需要在模块的清单文件中将此属性设置为 "false" 以避免运行时错误。

android:hasFragileUserData
是否在用户卸载应用程序时向用户显示提示以保留应用程序的数据。默认值为 "false"
android:hardwareAccelerated
是否为此应用程序中的所有活动和视图启用硬件加速渲染。如果已启用,则为 "true";如果未启用,则为 "false"。如果您将 minSdkVersiontargetSdkVersion 设置为 "14" 或更高,则默认值为 "true"。否则,则为 "false"

从 Android 3.0(API 级别 11)开始,应用程序可以使用硬件加速 OpenGL 渲染器来提高许多常见二维图形操作的性能。启用硬件加速渲染器后,Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 中的大多数操作都会加速。

即使对于没有明确使用框架的 OpenGL 库的应用程序,这也会使动画更平滑,滚动更平滑,并总体上提高响应速度。

并非所有 OpenGL 2D 操作都已加速。如果您启用了硬件加速渲染器,请测试您的应用程序,以便它可以使用渲染器而不会出现错误。

有关更多信息,请阅读 硬件加速 指南。

android:icon
整个应用程序的图标和应用程序每个组件的默认图标。请参阅 <activity><activity-alias><service><receiver><provider> 元素的各个 icon 属性。

此属性设置为对包含图像的可绘制资源的引用,例如 "@drawable/icon"。没有默认图标。

android:isGame
应用程序是否为游戏。系统可能会将归类为游戏的应用程序组合在一起,或者与其他应用程序分开显示。默认值为 "false"
android:isMonitoringTool

指示此应用程序旨在监控其他人。

注意:如果应用程序在其清单中声明此属性,则开发人员必须遵循 Stalkerware 策略才能将应用程序发布到 Google Play。

没有默认值。开发人员必须指定以下值之一

描述
"parental_control"应用程序迎合家长控制,专门针对希望保护孩子的家长。
"enterprise_management"应用程序迎合希望管理和跟踪提供给员工的设备的企业。
"other"应用程序迎合此表中未指定的其他用例。
android:killAfterRestore

在整个系统恢复操作期间,应用程序是否会在其设置恢复后终止。单包恢复操作永远不会导致应用程序关闭。整个系统恢复操作通常只发生一次,即在首次设置手机时。第三方应用程序通常不需要使用此属性。

默认值为 "true",这意味着在应用程序在整个系统恢复期间完成处理其数据后,它将终止。

android:largeHeap

应用程序的进程是否使用大型 Dalvik 堆创建。这适用于为应用程序创建的所有进程。它仅适用于加载到进程中的第一个应用程序。如果您使用共享用户 ID 来让多个应用程序使用一个进程,则它们都必须一致地使用此选项,以避免出现不可预测的结果。

大多数应用程序不需要此功能,而是专注于减少其整体内存使用量以提高性能。启用此功能也不能保证可用内存的固定增长,因为某些设备受到其总可用内存的限制。

要查询运行时的可用内存大小,请使用 getMemoryClass()getLargeMemoryClass() 方法。

android:label
整个应用程序的用户可读标签,以及应用程序每个组件的默认标签。请参阅 <activity><activity-alias><service><receiver><provider> 元素的各个 label 属性。

标签设置为对字符串资源的引用,以便可以像用户界面中的其他字符串一样对其进行本地化。但是,为了在您开发应用程序时方便起见,它也可以设置为原始字符串。

android:logo
整个应用程序的徽标,以及活动的默认徽标。此属性设置为对包含图像的可绘制资源的引用,例如 "@drawable/logo"。没有默认徽标。
android:manageSpaceActivity
系统启动的 Activity 子类的完全限定名称,以便用户管理应用程序在设备上占用的内存。该活动也使用 <activity> 元素声明。
android:name
为应用程序实现的 Application 子类的完全限定名称。启动应用程序进程时,将在应用程序的任何组件之前实例化此类。

子类是可选的。大多数应用程序不需要子类。在没有子类的情况下,Android 使用基本 Application 类的实例。

android:networkSecurityConfig

指定包含应用程序 网络安全配置 的 XML 文件的名称。该值为对包含配置的 XML 资源文件的引用。

此属性是在 API 级别 24 中添加的。

android:permission
客户端需要与应用程序交互的权限的名称。此属性是设置适用于应用程序所有组件的权限的便捷方法。它将被设置各个组件的 permission 属性覆盖。

有关权限的更多信息,请参阅应用程序清单概述中的 权限 部分以及 安全提示

android:persistent
应用程序是否始终保持运行状态。如果始终保持运行状态,则为 "true";如果未保持运行状态,则为 "false"。默认值为 "false"。应用程序通常不设置此标志。持久模式仅适用于某些系统应用程序。
android:process
应用程序所有组件运行的进程的名称。每个组件都可以通过设置自己的 process 属性来覆盖此默认值。

默认情况下,Android 在应用程序的第一个组件需要运行时为应用程序创建一个进程。然后,所有组件都在该进程中运行。默认进程的名称与 <manifest> 元素设置的包名匹配。

通过将此属性设置为与另一个应用程序共享的进程名称,您可以安排这两个应用程序的组件在同一个进程中运行,但前提是这两个应用程序也共享一个用户 ID 并且使用相同的证书签名。

如果分配给此属性的名称以冒号 (:) 开头,则在需要时将创建属于应用程序的私有新进程。如果进程名称以小写字母开头,则将创建具有该名称的全局进程。全局进程可以与其他应用程序共享,从而减少资源使用量。

android:restoreAnyVersion
指示应用程序已准备好尝试恢复任何备份的数据集,即使备份是由比当前安装在设备上的应用程序更新的应用程序版本存储的。将此属性设置为 "true" 使备份管理器即使在版本不匹配表明数据不兼容的情况下也能尝试恢复。谨慎使用!

此属性的默认值为 "false"

android:requestLegacyExternalStorage

应用程序是否想要选择退出 范围存储

注意:根据与策略或应用程序兼容性相关的更改,系统可能不会理会此选择退出请求。

android:requiredAccountType
指定应用程序正常运行所需的帐户类型。如果您的应用程序需要 Account,则此属性的值必须与您的应用程序使用的帐户身份验证器类型相对应,如 AuthenticatorDescription 定义的那样,例如 "com.google"

默认值为 null,表示应用程序可以在没有任何帐户的情况下运行。

由于受限配置文件无法添加帐户,因此指定此属性会使您的应用程序从受限配置文件中不可用,除非您还使用相同的值声明 android:restrictedAccountType

注意:如果账户数据可能泄露个人身份信息,请务必声明此属性并将 android:restrictedAccountType 设为 null,以防止受限配置文件使用您的应用程序访问属于拥有者用户的个人信息。

此属性是在 API 级别 18 中添加的。

android:resizeableActivity

指定应用程序是否支持 多窗口模式。您可以在 <activity><application> 元素中设置此属性。

如果将此属性设置为 "true",用户可以在分屏和自由形式模式下启动活动。如果将属性设置为 "false",则无法在多窗口环境中测试或优化应用程序。系统仍然可以使用兼容性模式将活动置于多窗口模式下。

将此属性设置为 "true" 并不保证屏幕上没有其他应用程序处于多窗口模式(例如画中画)或其他显示器上。因此,设置此标志并不意味着您的应用程序拥有独占的资源访问权限。

对于目标 API 级别为 24 或更高版本的应用程序,默认值为 "true"

如果您的应用程序目标 API 级别为 31 或更高版本,此属性在小型屏幕和大屏幕上的工作方式有所不同。

  • 大屏幕 (sw >= 600dp):所有应用程序都支持多窗口模式。此属性表示应用程序是否可以调整大小,而不是应用程序是否支持多窗口模式。如果 resizeableActivity="false",则应用程序在必要时将置于兼容性模式,以符合显示尺寸。
  • 小型屏幕 (sw < 600dp):如果 resizeableActivity="true" 且主活动的最小宽度和最小高度在多窗口要求范围内,则应用程序支持多窗口模式。如果 resizeableActivity="false",则无论活动最小宽度和高度如何,应用程序都不支持多窗口模式。

注意:设备制造商可以覆盖 API 级别 31 的行为。

此属性是在 API 级别 24 中添加的。

注意:任务的根活动值应用于在任务中启动的所有附加活动。也就是说,如果任务的根活动可调整大小,则系统将所有其他活动视为可调整大小。如果根活动不可调整大小,则任务中的其他活动也不可调整大小。

android:restrictedAccountType
指定此应用程序所需的帐户类型,并指示受限配置文件可以访问属于拥有者用户的此类帐户。如果您的应用程序需要一个 Account 并且受限配置文件可以访问主要用户的帐户,则此属性的值必须与您的应用程序使用的帐户身份验证程序类型相对应,如 AuthenticatorDescription 中定义的那样,例如 "com.google"

默认值为 null,表示应用程序可以在没有任何帐户的情况下运行。

注意:指定此属性可以让受限配置文件使用您的应用程序来访问属于拥有者用户的帐户,这可能会泄露个人身份信息。如果帐户可能会泄露个人详细信息,请勿使用此属性。相反,声明 android:requiredAccountType 属性,使您的应用程序对受限配置文件不可用。

此属性是在 API 级别 18 中添加的。

android:supportsRtl

声明您的应用程序是否愿意支持从右到左 (RTL) 布局。

如果此属性设置为 "true"targetSdkVersion 设置为 17 或更高版本,系统将激活和使用各种 RTL API,以便您的应用程序可以显示 RTL 布局。如果此属性设置为 "false"targetSdkVersion 设置为 16 或更低版本,则 RTL API 将被忽略或不起作用,无论与用户区域设置选择相关的布局方向如何,您的应用程序的行为都相同。也就是说,您的布局始终为从左到右。

此属性的默认值为 "false"

此属性是在 API 级别 17 中添加的。

android:taskAffinity
应用于应用程序中所有活动的亲和性名称,但那些使用自己的 taskAffinity 属性设置不同亲和性的活动除外。有关更多信息,请参阅该属性。

默认情况下,应用程序中的所有活动共享相同的亲和性。该亲和性的名称与 <manifest> 元素设置的包名称相同。

android:testOnly
指示此应用程序是否仅用于测试目的。例如,它可能会在自身之外公开功能或数据,这些功能或数据会导致安全漏洞,但对于测试很有用。此类 APK 只能通过 adb 安装。您无法将其发布到 Google Play。

当您单击运行 时,Android Studio 会自动添加此属性。

android:theme
对定义应用程序中所有活动的默认主题的样式资源的引用。各个活动可以通过设置自己的 theme 属性来覆盖默认值。有关更多信息,请参阅 样式和主题
android:uiOptions
活动的 UI 的额外选项。必须是以下值之一
描述
"none"没有额外的 UI 选项。这是默认值。
"splitActionBarWhenNarrow"在水平空间受限时(例如,在手机上处于纵向模式时),在屏幕底部添加一个条来显示应用栏(也称为操作栏)中的操作项。这样一来,少量操作项不会出现在屏幕顶部的应用栏中,而是将应用栏分成顶部的导航部分和底部的操作项条。这意味着操作项、顶部的导航和标题元素有足够的可用空间。菜单项不会拆分到两个条中。它们始终一起出现。

有关应用栏的更多信息,请参阅 添加应用栏

此属性是在 API 级别 14 中添加的。

android:usesCleartextTraffic
指示应用程序是否打算使用明文网络流量,例如明文 HTTP。目标 API 级别为 27 或更低版本的应用程序的默认值为 "true"。目标 API 级别为 28 或更高版本的应用程序默认为 "false"

当属性设置为 "false" 时,平台组件(例如 HTTP 和 FTP 堆栈、DownloadManagerMediaPlayer)会拒绝应用程序使用明文流量的请求。

强烈建议第三方库也遵守此设置。避免明文流量的关键原因是缺乏机密性、真实性和防篡改保护。网络攻击者可以窃听传输的数据,并在未被检测的情况下修改数据。

此标志以尽力而为的方式进行处理,因为考虑到向 Android 应用程序提供的访问级别,不可能阻止 Android 应用程序的所有明文流量。例如,并不期望 Socket API 遵守此标志,因为它无法确定其流量是否为明文。

但是,应用程序中的大多数网络流量由更高级别的网络堆栈和组件处理,这些组件可以通过从 ApplicationInfo.flagsNetworkSecurityPolicy.isCleartextTrafficPermitted() 读取标志来遵守此标志。

注意:对于目标 API 级别为 26 或更高版本的应用程序,WebView 会遵守此属性。

在应用程序开发过程中,可以使用 StrictMode 来识别应用程序中的任何明文流量。有关更多信息,请参阅 StrictMode.VmPolicy.Builder.detectCleartextNetwork()

此属性是在 API 级别 23 中添加的。

如果存在 Android 网络安全配置,则在 Android 7.0(API 级别 24)及更高版本上将忽略此标志。

android:vmSafeMode
指示应用程序是否希望虚拟机 (VM) 在安全模式下运行。默认值为 "false"

此属性是在 API 级别 8 中添加的,其中 "true" 的值会禁用 Dalvik 实时 (JIT) 编译器。

此属性在 API 级别 22 中进行了调整,其中 "true" 的值会禁用 ART 预先 (AOT) 编译器。

引入于
API 级别 1
另请参阅
<activity>
<service>
<receiver>
<provider>