Android manifest application标签 安卓清单文件全局属性配置

雨杰吖_5568

雨杰吖_5568

2026-03-04

763人浏览

原创

真正影响所有组件的application属性包括android:allowBackup、android:usesCleartextTraffic、android:networkSecurityConfig、android:debuggable(设为true时强制生效)、android:hardwareAccelerated(仅对Activity生效);android:exported和android:enabled不继承,必须逐个组件声明。

android manifest application标签 安卓清单文件全局属性配置

application 标签里哪些属性真会影响所有组件?

不是所有写在 里的属性都会自动继承给 activity/service/receiver —— 只有明确标注“可被子元素继承”的才生效。比如 android:exported 和 android:enabled 就不会向下传递,而 android:allowBackup、android:usesCleartextTraffic、android:networkSecurityConfig 这类全局行为控制项才会。

常见误操作:把 android:exported="true" 放在 里,以为能省掉每个 单独声明,结果构建直接报错:error: exported attribute must be explicitly specified。这是 Android 12+ 的硬性要求,和 无关。

  • android:allowBackup 和 android:fullBackupContent 确实影响全部组件的备份行为
  • android:debuggable 默认为 false,但一旦设为 true,所有组件都可被调试(即使单个 activity 显式设了 false,也无效)
  • android:hardwareAccelerated 默认 true,对所有 activity 生效;但 service/receiver 不受影响

targetSdkVersion 升级后 application 标签突然不兼容?

从 Android 12(API 31)起, 必须显式声明 android:exported,否则安装失败;Android 14(API 34)进一步要求 foreground service 必须声明 android:foregroundServiceType。这些不是可选配置,是 manifest 解析时的校验规则。

错误现象:升级 targetSdkVersion 后编译通过,但安装时报 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,日志里提示某个 缺少 android:exported —— 注意,这个错误和 本身无关,但它会暴露你之前靠默认值蒙混过关的问题。

  • 不要依赖旧版默认行为,尤其 android:exported 必须每个四大组件单独设
  • android:exported="false" 并不等于“安全”,它只表示不接受跨应用 intent;隐式 intent 仍可能被同进程其他组件触发
  • 如果用了 ,android:exported 必须为 true,否则运行时报 SecurityException

application 标签里路径类配置容易写错的位置

像 android:appCategory、android:dataExtractionRules、android:backupAgent 这些属性,值不是字符串字面量,而是资源引用或类名路径,拼错一个字母就导致解析失败或静默失效。

Android SMS Gateway
Android SMS Gateway

自托管短信服务,使用 Android 手机作为网关提供 HTTP API,支持发送/接收短信,兼容主流短信网关。

下载

典型问题:android:dataExtractionRules="@xml/data_extraction_rules" 指向的文件若不存在或命名不匹配(比如实际是 @xml/backup_rules),系统不会报错,但备份时直接跳过该规则;android:backupAgent 若写成 .MyBackupAgent 而实际类在子包里(如 com.example.backup.MyBackupAgent),就会抛 NoClassDefFoundError。

  • 所有以 @ 开头的值(如 @xml/xxx、@drawable/xxx)必须对应 res 目录下真实存在的资源
  • 类名路径必须完整,不能用相对写法;android:name=".MyApp" 是合法的,但 android:backupAgent=".MyAgent" 很可能出错,建议写全路径
  • android:networkSecurityConfig 指向的 xml 文件必须放在 res/xml/ 下,且根节点是 ,不是

多 module 项目中 application 标签的合并逻辑

manifest 合并不是简单覆盖,而是按工具链规则 merge。主 module 的 是 base,library module 的同名属性(如 android:allowBackup)会尝试合并 —— 但冲突时会报 merge error,而不是取后者。

比如主 module 写了 android:allowBackup="true",library module 写了 android:allowBackup="false",AS 会直接报错:Attribute allowBackup value=(false) from library is also present at AndroidManifest.xml:xx:yy value=(true)。这不是 bug,是 merge 工具的保护机制。

  • 避免在 library module 的 manifest 里设置全局属性,除非明确需要覆盖主工程行为
  • 用 tools:replace="android:allowBackup" 可强制覆盖,但要清楚后果:主工程的意图被完全忽略
  • 真正该由 library 控制的行为(如网络配置),应通过代码初始化(如 OkHttp 初始化)而非 manifest 声明

manifest 里最危险的不是写错什么,而是以为写了就等于生效 —— 很多属性只有在特定 API level、特定设备厂商定制系统、甚至特定安装方式(adb install vs Play Store)下才真正起作用。验证不能只看编译通过,得真机测行为。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

android

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.01

4784

5

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2024.08.01

6217

7

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2024.11.28

2522

7

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1009

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

3160

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1818

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2884

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

6204

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

6029

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 44.9万人学习

Java 教程
Java 教程

共578课时 | 194.7万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 9.7万人学习