manifest
应用清单
action
元素必须包含一个或多个 元素。如果intent过滤器中没有 元素,则过滤器不接受任何Intent对象。
activity
官方文档
. . .
activity-alias
官方文档
application
官方文档
. . .
allowTaskReparenting
allowBackup
- 是否允许应用程序参与备份和还原基础结构. 如果将此属性设置为false,则不会执行应用程序的备份或恢复,即使是通过完整的系统备份,否则会导致所有应用程序数据通过adb保存。默认值为 true.
allowClearUserData
- 是否允许应用程序重置用户数据。此数据包括标志 - 例如用户是否已阅读介绍性工具提示 - 以及用户可自定义的设置和首选项。此属性的默认值为true。
注意:只有属于系统映像的应用程序才能显式声明此属性。第三方应用无法在其清单文件中包含此属性。
更多消息,查看:Data backup overview
backupAgent
实现应用程序 backup agent 类名,BackupAgent 的子类。属性值应该是完全限定的类名(例如,“com.example.project.MyBackupAgent”)。但是,作为简写,如果名称的第一个字符是句点(例如,“。MyBackupAgent”),则它将附加到
元素中指定的包名称。 没有默认值。必须指定名称。
backupInForeground
表示即使应用程序处于前台等效(foreground-equivalent)状态,也可以在此应用程序上执行自动备份操作。系统在自动备份操作期间关闭应用程序,因此请谨慎使用此属性。将此标志设置为true可以在应用处于活动状态时影响应用行为。
默认值为 false,这意味着 OS 将避免在应用程序在前台运行时备份应用程序(例如,通过startForeground()状态的 Service 主动播放音乐的音乐应用程序)。
banner
A drawable resource providing an extended graphical banner for its associated item(提供其关联项目的扩展图形横幅).与
标签一起使用可为所有 Activity 提供默认横幅,或使用 标签为特定 Activity 提供横幅。 系统使用 banner (横幅) 来表示Android TV主屏幕中的应用程序。由于 banner (横幅)仅显示在 home screen 中,因此只应由 Application 指定的具有处理 CATEGORY_LEANBACK_LAUNCHER intent 的 Activity。
必须将此属性设置为对包含图像的可绘制资源的引用(例如“@drawable/banner”)。没有默认横幅。
有关详细信息,请参阅Provide a home screen banner中的提供主屏幕横幅。
debuggable
- 是否可以调试应用程序,即使在 user mode 下在设备上运行 - 如果可以,则为“true”,否则为“false”。默认值为“false”。
description
- 有关应用程序的用户可读文本, 比应用程序标签更长,更具描述性。必须将该值设置为对字符串资源的引用。与标签不同,它不能是原始字符串。没有默认值。
directBootAware
- 应用程序是否可以直接启动;也就是说,它是否可以在用户解锁设备之前运行。如果您正在使用 Application 的自定义子类,并且应用程序中的任何组件可以直接启动,那么您的整个自定义应用程序将被视为可直接启动。
注意:在直接引导期间,您的应用程序只能访问存储在设备保护存储中的数据。
- 默认值为“false”。
enabled
Android系统是否可以实例化应用程序的组件 - 如果可以,则为“true”,否则为“false”。如果值为“true”,则每个组件的enabled属性确定是否启用该组件。如果值为“false”,则它将覆盖特定于组件的值;所有组件都被禁用。
默认值是true”。
extractNativeLibs
package installer 是否可以从 APK 中提取 native libraries 到 filesystem。如果设置为false,那么您的 native libraries 必须在 APK 中 page aligned 和 stored uncompressed. 不需要更改代码,因为链接器在运行时直接从APK加载库。
The default value is "true".
fullBackupContent
此属性指向包含 Auto Backup 的 full backup rules 的XML文件。这些规则确定要备份的文件。Auto Backup 的更多信息,查看 XML Config Syntax
此属性是可选的。如果未指定,则默认情况下,“自动备份”包含应用程序的大部分文件。更多信息查看 Files that are backed up
fullBackupOnly
此属性指示是否在可用的设备上使用 Auto Backup。如果设置为true,那么当您的应用安装在运行Android 6.0(API级别23)或更高版本的设备上时,它会执行自动备份。在较旧的设备上,您的应用会忽略此属性并执行 Key/Value Backups。
The default value is "false".
hasCode
Whether or not the application contains any code — "true" if it does, and "false" if not. 当值为“false”时,系统在启动组件时不会尝试加载任何应用程序代码。默认值是true”。
例如,如果您的应用支持 Google Play 的 动态传送,并且包含不生成任何DEX文件(这是针对Android平台优化的字节码)的动态功能模块,则需要在模块的清单文件中将此属性设置为false。 否则,您可能会遇到运行时错误。
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操作都会加速。如果启用硬件加速渲染器,请测试应用程序以确保它可以无错误地使用渲染器。
For more information, read the Hardware Acceleration guide.
icon
整个应用程序的图标,以及每个应用程序组件的默认图标。查看
, , , 和 元素的各个图标属性。 必须将此属性设置为对包含图像的可绘制资源的引用(例如“@drawable/icon”)。没有默认图标。
isGame
该应用程序是否是游戏。系统可以将分类为游戏的应用程序组合在一起,或者将它们与其他应用程序分开显示。
The default is false.
killAfterRestore
在全系统还原操作期间,该应用程序的设置已恢复后,是否应终止该应用程序。单包恢复操作永远不会导致应用程序关闭。首次设置电话时,全系统还原操作通常只发生一次。第三方应用程序通常不需要使用此属性。
默认值为true,这意味着在应用程序在完整系统还原期间处理完数据后,它将终止。
largeHeap
是否应使用大型Dalvik堆创建应用程序的进程。这适用于为应用程序创建的所有进程。它仅适用于加载到进程中的第一个应用程序;如果您使用共享用户ID以允许多个应用程序使用进程,则它们都必须始终如一地使用此选项,否则它们将具有不可预测的结果。
大多数应用程序不应该需要这个,而应该专注于减少其总体内存使用量以提高性能。启用此功能也不能保证可用内存的固定增加,因为某些设备受其总可用内存的限制。
要在运行时查询可用的内存大小,请使用方法 getMemoryClass() 或 getLargeMemoryClass()。
label
作为整体的应用程序的用户可读标签,以及每个应用程序组件的默认标签。请参阅
, , , 和 元素的各个标签属性。 应将标签设置为对字符串资源的引用,以便它可以像用户界面中的其他字符串一样进行本地化。但是,为了方便您开发应用程序,它也可以设置为原始字符串。
logo
- 整个应用程序的徽标,以及 Activity 的默认徽标。必须将此属性设置为对包含图像的可绘制资源的引用(例如“@ drawable/logo”)。没有默认徽标。
manageSpaceActivity
- 系统可以启动的Activity子类的完全限定名称,以允许用户管理设备上应用程序占用的内存。还应使用
元素声明活动。
name
为应用程序实现的Application子类的完全限定名称。启动应用程序进程时,将在任何应用程序的组件之前实例化此类。
子类是可选的;大多数应用程序不需要一个。在没有子类的情况下,Android使用基本Application类的实例。
networkSecurityConfig
指定包含应用程序的网络安全配置的XML文件的名称。该值必须是对包含配置的XML资源文件的引用。
此属性已在API级别24中添加。
permission
客户端与应用程序交互的必须具有的权限名称。此属性是设置适用于所有应用程序组件的权限的便捷方式。可以通过设置各个组件的权限属性来覆盖它。
For more information on permissions, see the Permissions section in the introduction and another document, Security and Permissions.
persistent
- 应用程序是否应始终保持运行 - 如果应该,则为“true”,否则为“false”。默认值为“false”。应用程序通常不应设置此标志;持久性模式仅适用于某些系统应用程序。
process
应该运行应用程序的所有组件的进程的名称。每个组件都可以通过设置自己的进程属性来覆盖此默认值。
默认情况下,Android会在第一个组件需要运行时为应用程序创建一个进程。然后所有组件都在该过程中运行。默认进程的名称与
元素设置的包名称匹配。 通过将此属性设置为与另一个应用程序共享的进程名称,您可以安排两个应用程序的组件在同一进程中运行 - 但前提是这两个应用程序还共享一个用户ID并使用相同的证书进行签名。
如果分配给此属性的名称以冒号(':')开头,则在需要时会创建一个专用于应用程序的新进程。 如果进程名称以小写字符开头,则会创建该名称的全局进程。 可以与其他应用程序共享全局进程,从而减少资源使用。
restoreAnyVersion
表示应用程序已准备好尝试还原任何备份数据集,即使备份是由应用程序的较新版本存储而不是当前安装在设备上。将此属性设置为true将允许备份管理器尝试还原,即使版本不匹配表明数据不兼容也是如此。谨慎使用!
The default value of this attribute is false.
requiredAccountType
指定应用程序运行所需的帐户类型。如果您的应用需要帐户,则此属性的值必须与您的应用使用的帐户身份验证器类型(由AuthenticatorDescription定义)相对应,例如“com.google”。
默认值为null,表示应用程序可以在没有任何帐户的情况下工作。
由于受限制的配置文件当前无法添加帐户,因此指定此属性会使您的应用程序不受限制配置文件的影响,除非您还声明具有相同值的 android:restrictedAccountType。
警告:如果帐户数据可能会泄露个人身份信息,请务必声明此属性并保留 android:restrictedAccountType null,以便受限制的配置文件无法使用您的应用访问属于所有者用户的个人信息。
- This attribute was added in API level 18.
resizeableActivity
指定应用程序是否支持多窗口显示。您可以在
或 元素中设置此属性。 如果将此属性设置为true,则用户可以在分屏和自由形式模式下启动活动。 如果将该属性设置为false,则该活动不支持多窗口模式。 如果此值为false,并且用户尝试以多窗口模式启动活动,则活动将占据整个屏幕。
如果您的应用面向API级别24或更高级别,但未指定此属性的值,则该属性的值默认为true。
This attribute was added in API level 24.
restrictedAccountType
- 指定此应用程序所需的帐户类型,并指示允许受限制的配置文件访问属于所有者用户的此类帐户。 如果您的应用需要帐户,并且允许受限制的个人资料访问主要用户的帐户,则此属性的值必须与您的应用使用的帐户身份验证器类型(由AuthenticatorDescription定义)相对应,例如“com.google”。默认值为null,表示应用程序可以在没有任何帐户的情况下工作。
警告:指定此属性允许受限制的配置文件将您的应用与属于所有者用户的帐户一起使用,这可能会泄露个人身份信息。 如果帐户可能会显示个人详细信息,则不应使用此属性,而应声明 android:requiredAccountType 属性,以使您的应用对受限制的配置文件不可用。
- This attribute was added in API level 18.
supportsRtl
声明您的应用程序是否愿意支持 right-to-left (RTL)布局。如果设置为true且targetSdkVersion设置为17或更高,则系统将激活并使用各种RTL API,以便您的应用程序可以显示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低,则RTL API将被忽略或无效,并且无论与用户的Locale选项关联的布局方向如何,您的应用都将表现相同(您的布局将始终保持不变 left-to-right)。
The default value of this attribute is false.
This attribute was added in API level 17.
taskAffinity
一个关联名称,适用于应用程序中的所有活动,但与其自己的taskAffinity属性设置不同关联的活动除外。有关更多信息,请参阅该属性。
默认情况下,应用程序中的所有活动共享相同的关联。该关联的名称与
元素设置的包名称相同。
testOnly
- 指示此应用程序是否仅用于测试目的。 例如,它可能会暴露自身之外的功能或数据,这会导致安全漏洞,但对测试很有用。 这种APK只能通过adb安装 - 您无法将其发布到Google Play。
theme
- 对样式资源的引用,该资源定义应用程序中所有活动的默认主题。单个活动可以通过设置自己的主题属性来覆盖默认值。有关更多信息,请参阅样式和主题开发人员指南。
uiOptions
- Extra options for an activity's UI.
- Must be one of the following values.
Value | Description |
---|---|
"none" | No extra UI options. This is the default. |
"splitActionBarWhenNarrow" | 当受限于水平空间时(例如在手机上处于纵向模式时),在屏幕底部添加一个条以在应用栏(也称为操作栏)中显示操作项。应用栏分为顶部导航部分和操作项底部栏,而不是显示在屏幕顶部的应用栏中的少量操作项。这样可以确保合理的空间不仅可用于操作项,还可用于顶部的导航和标题元素。菜单项不会分成两个栏;他们总是一起出现。 |
For more information about the app bar, see the Adding the App Bar training class.
This attribute was added in API level 14.
usesCleartextTraffic
指示应用程序是否打算使用明文网络流量,例如明文HTTP。默认值是true”。
当属性设置为“false”时,平台组件(例如,HTTP和FTP堆栈,DownloadManager,MediaPlayer)将拒绝应用程序使用明文流量的请求。强烈建议第三方 libraries 遵守此设置。避免明文流量的关键原因是缺乏机密性,真实性和防止篡改:网络攻击者可以窃听传输的数据并在不被检测的情况下对其进行修改。
由于Android应用程序提供了一定的访问级别,因此不可能阻止Android应用程序的所有明文通信。例如,套接字API不会因为无法确定其流量是否在明文中而使用此标志。然而,大多数来自应用程序的网络流量是由更高级别的网络堆栈/组件处理的,这些组件可以通过从 ApplicationInfo.flag 或NetworkSecurityPolicy.isCleartextTrafficPermitted() 中读取这个标志来表示这个标志.
注意:WebView尊重针对API级别26及更高级别的应用程序的此属性。
在应用程序开发期间,StrictMode可用于识别来自应用程序的任何明文流量:请参阅 StrictMode.VmPolicy.Builder.detectCleartextNetwork()
This attribute was added in API level 23.
This flag is ignored on Android 7.0 (API level 24) and above if an Android Network Security Config is present.
vmSafeMode
指示应用程序是否希望虚拟机(VM)以安全模式运行。默认值为“false”。
此属性是在API级别8中添加的,其中值“true”禁用了Dalvik实时(JIT)编译器。
此属性在API级别22中进行了调整,其中值“true”禁用了ART提前(AOT)编译器。
category
注意:要接收隐式意图,必须在 intent filter 中包含 CATEGORY_DEFAULT 类别。 方法startActivity()和startActivityForResult()将所有意图视为已声明 CATEGORY_DEFAULT 类别。 如果您未在意图过滤器中声明它,则不会将隐式意图解析为您的活动。
...
指定与应用程序兼容的每个屏幕配置。 清单中只允许一个
元素实例,但它可以包含多个 元素。 每个 元素指定应用程序兼容的特定屏幕 size-density 组合。 Android系统不会读取
清单元素(既不在安装时也不在运行时)。此元素仅供参考,可供外部服务(如Google Play)使用,以更好地了解应用程序与特定屏幕配置的兼容性,并为用户启用过滤。未在此元素中声明的任何屏幕配置都是与应用程序不兼容的屏幕。因此,外部服务(例如Google Play)不应向具有此类屏幕的设备提供应用程序。
警告:通常,您不应使用此清单元素。使用此元素可以显着减少应用程序的潜在用户群,如果他们的设备具有您未列出的屏幕配置,则不允许用户安装应用程序。当应用程序绝对不适用于特定的屏幕配置时,您应该仅将其用作最后的手段。您应该遵循支持[多个屏幕的指南](https://developer.android.com/guide/practices/screens_support.html),而不是使用此元素,以使用不同的屏幕尺寸和密度的替代布局和位图为多个屏幕提供可扩展的支持。
如果只想为应用程序设置最小屏幕大小,则应使用
元素。 例如,如果您希望应用程序仅适用于大型和超大屏幕设备,则 元素允许您声明您的应用程序不支持小屏幕尺寸和普通屏幕尺寸。 外部服务(例如Google Play)会相应地过滤您的应用程序。 您还可以使用 元素声明系统是否应针对不同的屏幕大小调整应用程序的大小。 另请参阅Google Play上的过滤器文档,详细了解Google Play如何使用此清单元素和其他清单元素过滤应用程序。
screen
- 指定与应用程序兼容的单个屏幕配置。 必须至少将此元素的一个实例放在
元素内。此元素必须包含 android:screenSize 和 android:screenDensity 属性(如果不声明这两个属性,则忽略该元素)。
screenSize
需要。指定此屏幕配置的屏幕大小。
-
Accepted values:
- small
- normal
- large
- xlarge
screenDensity
需要。指定此屏幕配置的屏幕密度。
-
Accepted values:
- "ldpi" (approximately 120 dpi)
- "mdpi" (approximately 160 dpi)
- "hdpi" (approximately 240 dpi)
- "xhdpi" (approximately 320 dpi)
- "280"
- "360"
- "420"
- "480"
- "560"
data
contain in
description
添加到 intent filter 的特定的数据。规范可以只是数据类型(mimeType属性),只是URI,或者是 data type 和 URI 的组合。 URI由每个部分的单独属性指定:
://:[||]
指定URL格式的这些属性是可选的,但也是相互依赖的:
- 如果未为 intent filter 指定方案,则忽略所有其他URI属性。
- 如果未为 filter 指定 host,则会忽略 port属性 和所有 path属性。
同一
. . .
相当于这一个:
. . .
您可以在
有关 intent filter 如何工作的信息,包括Intent对象如何与 filter 匹配的规则,可以在另一个文档 Intents and Intent Filters中找到。另请参阅清单文件概述中的“意图过滤器”部分。
attributes
scheme
The scheme part of a URI.这是指定URI的最小基本属性;必须为 filter 设置至少一个scheme属性,否则其他URI属性都不会有意义。
schmem 由没有 尾部冒号 指定(例如,http,而不是http:)。
If the filter has a data type set (the mimeType attribute) but no scheme, the content: and file: schemes are assumed.
注意:与 RFC 不同,Android Framework 中的 Scheme 匹配区分大小写。因此,您应始终使用小写字母指定 Scheme。
host
The host part of a URI authority.如果 filter 的 scheme 属性未指定,host 属性将没有任何意义。要匹配多个子域,请使用星号(*)匹配主机中的零个或多个字符。例如,host *.google.com 匹配 www.google.com, .google.com 和 developer.google.com.
星号必须是主机属性的第一个字符。例如,主机google.co.* 无效,因为星号通配符不是第一个字符。
注意:与 RFC 不同,Android Framework 中的 host 匹配区分大小写。因此,您应始终使用小写字母指定 Scheme。
port
- The port part of a URI authority. 如果 filter 没有指定 scheme 和 host, 则此属性没有意义。
path
pathPrefix
pathPattern
URI 的 path 必须以 / 开头。path属性指定与Intent对象中的完整路径匹配的完整路径。pathPrefix属性指定仅与Intent对象中路径的初始部分匹配的部分路径。pathPattern属性指定与Intent对象中的完整路径匹配的完整路径,但它可以包含以下通配符:
- 星号('*')匹配前一个字符的0到多次出现的序列。
- 星号后跟一个句点(“.*”)匹配0到多个字符的任何序列。
因为当从XML读取字符串(在将其解析为模式之前)时,''被用作转义字符,所以您需要双重转义:例如,文字'*'将被写为“\ *“和字面 '\ ' 将写成”\ \ \ \ “。这与在Java代码中构造字符串时需要编写的内容基本相同。
有关这三种模式的更多信息,请参阅PatternMatcher类中的PATTERN_LITERAL,PATTERN_PREFIX和PATTERN_SIMPLE_GLOB的说明。
These attributes are meaningful only if the scheme and host attributes are also specified for the filter.
android:mimeType
A MIME media type, such as image/jpeg or audio/mpeg4-generic. The subtype can be the asterisk wildcard (*) to indicate that any subtype matches.
intent filter 通常声明只包含 android:mimeType 属性的。
manifest
. . .
contained in:
none
must contain:
can contain:
description:
The root element of the AndroidManifest.xml file. It must contain an
attributes:
xmlns:android
Defines the Android namespace. This attribute should always be set to "http://schemas.android.com/apk/res/android".
service
对应Android官方文档链接
. . .
android:description
- 描述用户服务的字符串。
android:directBootAware
- 服务是否可以直接启动;也就是说,它是否可以在用户解锁设备之前运行。
android:enabled
- 服务是否可以由系统实例化 - 如果可以,则为“true”,否则为“false”。默认值是true”。
元素具有自己的enabled属性,该属性适用于所有应用程序组件,包括服务。对于要启用的服务, 和 属性必须都为“true”(因为它们都是默认值)。如果其中任何一个为“假”,则禁用该服务;它无法实例化。
android:exported
其他应用程序的组件是否可以调用服务或与之交互 - 如果可以,则为“true”,否则为“false”。当值为“false”时,只有相同应用程序的组件或具有相同用户ID的应用程序才能启动服务或绑定到该服务。
默认值取决于服务是否包含 intent filter。 缺少任何 filter 意味着只能通过指定其确切的类名来调用它。这意味着该服务仅供应用程序内部使用(因为其他人不知道类名)。所以在这种情况下,默认值为“false”。另一方面,至少一个 filter 的存在意味着该服务旨在供外部使用,因此默认值为“true”。
此属性不是限制服务暴露给其他应用程序的唯一方法。您还可以使用权限来限制可以与服务交互的外部实体(请参阅 permission 属性)。
android:icon
An icon representing the service. This attribute must be set as a reference to a drawable resource containing the image definition.如果未设置,则使用为整个应用程序指定的图标(请参阅
元素的图标属性)。 The service's icon - 无论是在此处设置还是由
元素设置 - 也是所有服务的service's intent filters 的默认图标(请参阅 元素的图标属性)。
android:isolatedProcess
- 如果设置为true,则此服务将在与系统其余部分隔离的特殊进程下运行,并且没有自己的权限。与它的唯一通信是通过Service API(绑定和启动)。
android:label
可以向用户显示的服务的名称。如果未设置此属性,则使用整个应用程序的标签集(请参阅
元素的label属性)。 服务的标签 - 无论是在此处设置还是由
元素设置 - 也是所有服务的 intent filter 的默认标签(请参阅 元素的label属性)。 应将标签设置为对字符串资源的引用,以便它可以像用户界面中的其他字符串一样进行本地化。但是,为了方便您开发应用程序,它也可以设置为原始字符串。
android:name
继承自 Service 类的子类的名称.这应该是一个完全限定的类名(例如“com.example.project.RoomService”)。但是,作为简写,如果名称的第一个字符是句点(例如“.RoomService”),则它将附加到
元素中指定的包名称。 发布应用程序后,不应更改此名称(除非您已设置android:exported =“false”)。
没有默认值。必须指定名称。
android:permission
The name of a permission that an entity must have in order to launch the service or bind to it.如果 startService(),bindService() 或 stopService() 的调用者未被授予此权限,则该方法将不起作用,并且 Intent 对象将不会传递给该服务。
如果未设置此属性,则
元素的权限属性设置的权限适用于该服务。如果两个属性均未设置,则该服务不受权限保护。 有关权限的更多信息,请参阅简介中的“权限”部分和单独的文档“安全性和权限”。
android:process
要运行服务的进程的名称。通常,应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包的名称相同。
元素的 process 属性可以为所有组件设置不同的默认值。但组件可以使用自己的流程属性覆盖默认值,允许您跨多个流程分布应用程序。 如果分配给此属性的名称以冒号(':')开头,则在需要时创建一个专用于应用程序的新进程,并在该进程中运行该服务.如果进程名称以小写字符开头,则服务将在该名称的全局进程中运行,前提是它具有这样做的权限。这允许不同应用程序中的组件共享进程,从而减少资源使用。