- 语法
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" android:sharedUserMaxSdkVersion="integer" android:versionCode="integer" android:versionName="string" android:installLocation=["auto" | "internalOnly" | "preferExternal"] > ... </manifest>
- 包含于
- 无
- 必须包含
<application>
- 可以包含
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>
- 描述
AndroidManifest.xml
文件的根元素。它必须包含一个<application>
元素并指定xmlns:android
和package
属性。- 属性
-
xmlns:android
- 定义 Android 命名空间。此属性始终设置为
"http://schemas.android.com/apk/res/android"
。 package
- APK 清单文件中的
package
属性的值表示您的应用的通用唯一应用 ID。它被格式化为 Android 应用的完整 Java 语言样式包名称。名称可以包含大写或小写字母、数字和下划线 ('_')。但是,各个包名称部分只能以字母开头。小心不要更改
package
值,因为这实际上会创建一个新的应用。以前版本的应用的用户不会收到更新,并且无法在旧版本和新版本之间传输其数据。在基于 Gradle 的构建系统中,从 AGP 7.3 开始,不要直接在源清单文件中设置
package
值。有关更多信息,请参阅 设置应用 ID。 android:sharedUserId
-
此常量从 API 级别 29 开始已弃用。
共享用户 ID 会导致包管理器中的非确定性行为。因此,强烈建议不要使用它们,并且可能在 Android 的未来版本中删除。相反,请使用适当的通信机制(例如服务和内容提供程序)来促进共享组件之间的互操作性。现有应用无法删除此值,因为不支持从共享用户 ID 迁移。在这些应用中,添加android:sharedUserMaxSdkVersion="32"
以避免在新的用户安装上使用共享用户 ID。与其他应用共享的 Linux 用户 ID 的名称。默认情况下,Android 为每个应用分配其自己的唯一用户 ID。但是,如果此属性对两个或多个应用设置为相同的值,则它们都共享相同的 ID,前提是它们的证书集相同。具有相同用户 ID 的应用可以访问彼此的数据,并且如果需要,可以在同一个进程中运行。
android:targetSandboxVersion
- 此应用要使用的目标沙盒。沙盒版本号越高,安全级别越高。其默认值为
1
;您也可以将其设置为2
。将此属性设置为2
会将应用切换到不同的 SELinux 沙盒。以下限制适用于 2 级沙盒
- 网络安全配置中
usesCleartextTraffic
的默认值为 false。 - 不允许使用 UID 共享。
对于针对 Android 8.0(API 级别 26)或更高版本的 Android 即时应用,此属性设置为
2
。您可以在应用的已安装版本中将沙盒级别设置为限制较少的级别1
。但是,如果您这样做,您的应用不会将应用数据从即时应用保留到应用的已安装版本。您必须将已安装应用的沙盒值设置为2
,以便数据从即时应用保留到已安装版本。应用安装后,只能将其目标沙箱值更新为更高的值。要降级目标沙箱值,请卸载应用并将其替换为清单文件中此属性值较低的版本。
- 网络安全配置中
android:sharedUserLabel
-
此常量从 API 级别 29 开始已弃用。
共享用户 ID 会导致包管理器内部出现不确定性行为。因此,强烈建议不要使用共享用户 ID,并且它可能会在 Android 的未来版本中移除。请改用适当的通信机制(例如服务和内容提供程序)来促进共享组件之间的互操作性。现有应用无法移除此值,因为不支持从共享用户 ID 迁移。共享用户 ID 的用户可读标签。该标签设置为对字符串资源的引用。它不能是原始字符串。
此属性在 API 级别 3 中引入。仅当
sharedUserId
属性也设置时,此属性才有意义。 android:sharedUserMaxSdkVersion
-
共享用户 ID 会导致包管理器内部出现不确定性行为。因此,强烈建议不要使用共享用户 ID,并且它可能会在 Android 的未来版本中移除。请改用适当的通信机制(例如服务和内容提供程序)来促进共享组件之间的互操作性。
系统仍然使用
android:sharedUserId
的最大 SDK 版本。如果您的应用在新设备上安装,并且该设备运行的 SDK 版本高于指定值,则您的应用的行为就像您从未定义android:sharedUserId
一样。此属性在 API 级别 33 中引入。仅当
sharedUserId
属性也设置时,此属性才有意义。 android:versionCode
- 内部版本号。此数字仅用于确定一个版本是否比另一个版本更新,数字越高表示版本越新。这不是向用户显示的版本号,版本号由
versionName
属性设置。该值设置为大于 0 的正整数。您可以根据需要定义它,只要每个后续版本都具有更高的数字即可。例如,它可以是构建编号,或者您可以将“x.y”格式的版本号转换为整数,方法是将“x”和“y”分别编码在低 16 位和高 16 位中。或者,每次发布新版本时,都可以将数字增加 1。
android:versionName
- 向用户显示的版本号。此属性设置为原始字符串或对字符串资源的引用。该字符串除了显示给用户之外,没有其他用途。
versionCode
属性保存内部使用的重要版本号。 android:installLocation
- 应用的默认安装位置。接受以下关键字字符串
值 描述 "internalOnly"
应用仅安装在设备内部存储上。如果设置了此选项,则应用绝不会安装在外部存储上(例如 SD 卡)。如果内部存储已满,则系统不会安装该应用。如果您未定义 android:installLocation
,则这是默认行为。"auto"
应用可以安装在外部存储上,但系统默认将应用安装在内部存储上。如果内部存储已满,则系统会将其安装在外部存储上。安装后,用户可以通过系统设置将应用移动到内部或外部存储。 "preferExternal"
应用优先安装在外部存储上。无法保证系统会遵守此请求。如果外部媒体不可用或已满,则应用可能会安装在内部存储上。安装后,用户可以通过系统设置将应用移动到内部或外部存储。 注意:默认情况下,您的应用安装在内部存储上,并且除非您将此属性定义为
"auto"
或"preferExternal"
,否则无法安装在外部存储上。应用安装在外部存储上时
- APK 文件保存到外部存储,但任何应用数据(例如数据库)仍保存在设备内部存储器中。
- 保存 APK 文件的容器使用密钥进行加密,该密钥允许应用仅在安装它的设备上运行。用户无法将 SD 卡传输到其他设备并使用安装在卡上的应用。同一设备可以使用多张 SD 卡。
- 根据用户的请求,可以将应用移动到内部存储。
用户还可以请求将应用从内部存储移动到外部存储。但是,如果此属性设置为
"internalOnly"
(默认设置),则系统不允许用户将应用移动到外部存储。有关使用此属性的更多信息(包括如何维护向后兼容性),请参阅应用安装位置。
在以下版本中引入:API 级别 8。
- 引入于
- 除非属性描述中另有说明,否则所有属性均在 API 级别 1 中引入。
- 另请参阅
-
<application>