Android复习(三)清单文件中的元素——>application
<application>
- 语法:
-
<application android:allowTaskReparenting=["true" | "false"] android:allowBackup=["true" | "false"] android:allowClearUserData=["true" | "false"] android:backupAgent="string" android:backupInForeground=["true" | "false"] android:banner="drawable resource" android:debuggable=["true" | "false"] android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:extractNativeLibs=["true" | "false"] android:fullBackupContent="string" android:fullBackupOnly=["true" | "false"] android:hasCode=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:isGame=["true" | "false"] 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: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>
<provider>
<uses-library>
- 说明:
- 应用的声明。此元素包含用于声明每个应用组件的子元素,并且具有会影响所有组件的属性。其中许多属性(如
icon
、label
、permission
、process
、taskAffinity
和allowTaskReparenting
)会为组件元素的相应属性设置默认值。其他属性(如debuggable
、enabled
、description
和allowClearUserData
)则为整个应用设置值,并且不能被组件替换。 - 属性
android:allowTaskReparenting
- 应用定义的 Activity 是否可以从启动它们的任务移至对其具有粘性的任务(当下次将该任务置于前台时)。如果它们可以移动,则设为
"true"
;如果它们必须一直与启动它们的任务在一起,则设为"false"
。默认值为"false"
。<activity>
元素有其自己的allowTaskReparenting
属性,该属性可以替换此处设置的值。如需了解详情,请参阅该属性。 android:allowBackup
- 是否允许应用参与备份和恢复基础架构。如果将此属性设为 false,则永远不会为该应用执行备份或恢复,即使是采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据)。此属性的默认值为 true。
android:allowClearUserData
-
是否允许应用重置用户数据。这些数据包括标志(如用户是否看到了介绍性提示)以及用户可自定义的设置和偏好设置。此属性的默认值为
true
。注意:只有属于系统映像的应用才能明确声明此属性。第三方应用不能在其清单文件中包含此属性。
如需了解详情,请参阅在新设备上恢复用户数据。
android:backupAgent
- 实现应用的备份代理的类的名称,它是
BackupAgent
的子类。属性值应该是一个完全限定类名(如"com.example.project.MyBackupAgent"
)。不过,作为一种简写形式,如果名称的第一个字符是句点(例如".MyBackupAgent"
),则会将其附加到<manifest>
元素中指定的软件包名称。没有默认值。必须指定相应名称。
android:backupInForeground
- 表示即使此应用处于前台等效状态,也可以对其执行自动备份操作。系统会在自动备份操作期间关闭应用,因此使用此属性时应格外小心。将此标志设为 true 会影响应用处于活动状态时的行为。
默认值为
false
,这表示当应用在前台运行时(如正在通过处于startForeground()
状态的服务播放音乐的音乐应用),操作系统会避免对其进行备份。 android:banner
- 一种可绘制资源,可为其关联项提供扩展图形横幅。它可以与
<application>
标记一起使用,为所有应用 Activity 提供默认横幅;也可以与<activity>
标记一起使用,为特定 Activity 提供横幅。系统在 Android TV 主屏幕中使用横幅来代表应用。由于横幅只显示在主屏幕中,因此只能由具有能够处理
CATEGORY_LEANBACK_LAUNCHER
Intent 的 Activity 的应用指定。必须将此属性设为对包含图片的可绘制资源(例如
"@drawable/banner"
)的引用。没有默认横幅。如需了解详情,请参阅“TV 应用入门”中的提供主屏幕横幅。
android:debuggable
- 是否可以调试应用(即使在处于用户模式的设备上运行时)。如果可以调试,则设为
"true"
;如果无法调试,则设为"false"
。默认值为"false"
。 android:description
- 有关应用的用户可读文本,比应用标签更长且描述性更强。必须将值设为对字符串资源的引用。与标签不同,它不能是原始字符串。没有默认值。
android:directBootAware
-
应用是否可感知直接启动 (direct-boot);即,它是否可以在用户解锁设备之前运行。如果您使用的是
Application
的自定义子类,并且应用内的任何组件可感知直接启动,则整个自定义应用会被视为可感知直接启动。注意:在直接启动期间,应用只能访问设备保护存储空间内的数据。
默认值为
"false"
。 android:enabled
- Android 系统是否可以实例化应用的组件。如果可以实例化,则设为
"true"
;如果无法实例化,则设为"false"
。如果值为"true"
,则每个组件的enabled
属性决定了是否启用该组件。如果值为"false"
,则会替换特定于组件的值;所有组件都处于停用状态。默认值为
"true"
。 android:extractNativeLibs
- 软件包安装程序是否将原生库从 APK 提取到文件系统。如果设为
false
,则原生库必须保持页面对齐状态并以未压缩的形式存储在 APK 中。无需更改代码,因为链接器在运行时直接从 APK 加载库。默认值为
"true"
。 android:fullBackupContent
- 此属性指向一个包含自动备份功能的完整备份规则的 XML 文件。这些规则决定了备份哪些文件。如需了解详情,请参阅自动备份的 XML 配置语法。
此属性是可选的。如果未指定,默认情况下,自动备份会涵盖应用的大部分文件。如需了解详情,请参阅备份的文件。
android:fullBackupOnly
- 此属性指示是否在设备上使用自动备份(如果可用)。如果设为
true
,则应用安装在搭载 Android 6.0(API 级别 23)或更高版本的设备上时会执行自动备份。在旧款设备上,应用会忽略此属性并执行键值对备份。默认值为
"false"
。 android:hasCode
- 应用是否包含任何代码。如果包含,则设为
"true"
;如果不包含,则设为"false"
。如果值为"false"
,则系统在启动组件时不会尝试加载任何应用代码。默认值为"true"
。例如,如果您的应用支持 Google Play 的 Dynamic Delivery 并且包含不会生成任何 DEX 文件(它们是针对 Android 平台优化的字节码)的动态功能模块,则您需要在模块的清单文件中将此属性设为
false
。否则,您可能会遇到运行时错误。 android:hardwareAccelerated
- 是否应为此应用中的所有 Activity 和视图启用硬件加速渲染。如果应启用,则设为
"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/icon"
)的引用。没有默认图标。 android:isGame
- 应用是否为游戏。系统可以将分类为游戏的应用归入一组,或者将它们与其他应用分开显示。
默认值为
false
。 android:killAfterRestore
- 在全系统恢复操作期间恢复相关应用的设置后是否应终止该应用。单个软件包恢复操作绝不会导致应用关闭。全系统恢复操作通常只在首次设置手机时执行一次。第三方应用通常不需要使用此属性。
默认值为
true
,这表示应用在全系统恢复期间处理完其数据后会终止。 android:largeHeap
- 是否应使用大型 Dalvik 堆创建应用的进程。此属性适用于为应用创建的所有进程。它只适用于加载到进程中的第一个应用;如果您使用共享用户 ID 允许多个应用使用一个进程,则它们必须全部以一致的方式使用此选项,否则会产生不可预知的结果。
大多数应用都不需要此属性,而应专注于减少其总体内存使用量以提高性能。启用此属性也不能保证可用内存的固定增长,因为某些设备受其可用内存总量的限制。
要在运行时查询可用内存大小,请使用
getMemoryClass()
或getLargeMemoryClass()
方法。 android:label
- 整个应用的用户可读标签,以及每个应用组件的默认标签。请参阅
<activity>
、<activity-alias>
、<service>
、<receiver>
和<provider>
元素各自的label
属性。应将标签设为对字符串资源的引用,以便可以像界面中的其他字符串一样进行本地化。不过,为了方便您开发应用,也可以将其设为原始字符串。
android:logo
- 整个应用的徽标,以及 Activity 的默认徽标。
必须将此属性设为对包含图片的可绘制资源(例如
"@drawable/logo"
)的引用。没有默认徽标。 android:manageSpaceActivity
- 一个 Activity 子类的完全限定名称,系统可以启动该子类来让用户管理设备上的应用占用的内存。还应使用
<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:requiredAccountType
- 指定应用正常运行所需的帐号类型。如果您的应用需要
Account
,则此属性的值必须与您的应用使用的帐号身份验证器类型(由AuthenticatorDescription
定义,如“com.google”)相对应。默认值为 null,这表示应用可以在没有任何帐号的情况下运行。
由于受限个人资料目前无法添加帐号,因此指定此属性会使受限个人资料无法使用您的应用,除非您也声明具有相同值的
android:restrictedAccountType
。注意:如果帐号数据可能会泄露个人身份信息,请务必声明此属性并让
android:restrictedAccountType
为 null,这样受限个人资料就无法使用您的应用来访问属于所有者用户的个人信息。此属性是在 API 级别 18 中添加的。
resizeableActivity
-
指定应用是否支持多窗口显示。您可以在
<activity>
或<application>
元素中设置此属性。如果您将此属性设为 true,则用户可以在分屏模式和自由窗口模式下启动 Activity。如果您将此属性设为 false,则 Activity 不支持多窗口模式。如果此值为 false,并且用户尝试在多窗口模式下启动 Activity,则 Activity 会占据整个屏幕。
如果您的应用的目标 API 级别为 24 或更高级别,但您没有为此属性指定值,则此属性的值默认为 true。
此属性是在 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
- 一个粘性名称,适用于应用中的所有 Activity,但使用自己的
taskAffinity
属性设置不同粘性的 Activity 除外。如需了解详情,请参阅该属性。默认情况下,应用中的所有 Activity 具有相同的粘性。该粘性的名称与由
<manifest>
元素设置的软件包名称相同。 android:testOnly
- 指示此应用是否仅用于测试目的。例如,它可能会在自身之外公开功能或数据,这样会导致安全漏洞,但对测试很有用。此类 APK 只能通过
adb
安装,您不能将其发布到 Google Play。当您点击 Run 图标 时,Android Studio 会自动添加此属性。
android:theme
- 对样式资源的引用,用于为应用中的所有 Activity 定义默认主题背景。各个 Activity 可以通过设置自己的
theme
属性来替换默认值。如需了解详情,请参阅样式和主题背景开发者指南。 android:uiOptions
- 有关 Activity 界面的额外选项。
必须是以下某个值。
值 说明 "none"
没有额外的界面选项。这是默认值。 "splitActionBarWhenNarrow"
当水平空间受限时(比如手机处于竖屏模式时),在屏幕底部添加一个栏,以显示应用栏(也称为操作栏)中的操作项。应用栏拆分成顶部导航区域和用于显示操作项的底部栏,而不是在屏幕顶部的应用栏中显示少量操作项。这样可以确保不仅为操作项提供合理的空间,而且还为顶部的导航和标题元素提供合理的空间。菜单项并不拆分到这两个栏中;它们总是一起显示。 如需详细了解应用栏,请参阅添加应用栏培训课程。
此属性是在 API 级别 14 中添加的。
android:usesCleartextTraffic
- 指示应用是否打算使用明文网络流量,如明文 HTTP。对于目标 API 级别为 27 或更低级别的应用,默认值为
"true"
。对于目标 API 级别为 28 或更高级别的应用,默认值为"false"
。如果将此属性设为
"false"
,平台组件(例如 HTTP 和 FTP 堆栈、DownloadManager
和MediaPlayer
)将拒绝应用要使用明文流量的请求。强烈建议第三方库也遵循此设置。避免使用明文流量的主要原因是缺乏机密性、真实性和防止篡改的保护措施;网络攻击者可以窃听传输的数据,还可以在不被检测到的情况下修改数据。此标志的遵循只能尽力而为,因为鉴于提供给 Android 应用的访问级别,不可能阻止来自这些应用的所有明文流量。例如,不要期望
Socket
API 遵循此标志,因为它无法确定其流量是否采用明文形式。不过,来自应用的大部分网络流量都由较高级别的网络堆栈/组件处理,这些堆栈/组件可通过从ApplicationInfo.flags
或NetworkSecurityPolicy.isCleartextTrafficPermitted()
读取来遵循此标志。注意:对于目标 API 级别为 26 及更高级别的应用,
WebView
遵循此属性。在应用开发过程中,可使用 StrictMode 识别来自应用的任何明文流量。如需了解详情,请参阅
StrictMode.VmPolicy.Builder.detectCleartextNetwork()
。此属性是在 API 级别 23 中添加的。
如果存在 Android 网络安全配置,则会在 Android 7.0(API 级别 24)及更高版本上忽略此标志。
android:vmSafeMode
- 指示应用是否希望虚拟机在安全模式下运行。默认值为
"false"
。此属性是在 API 级别 8 中添加的,最初添加时,如果值为“true”,会停用 Dalvik 即时 (JIT) 编译器。
此属性在 API 级别 22 中进行了调整,调整后,如果值为“true”,会停用 ART 预先 (AOT) 编译器。