AndroidManifest.xml 是Android应用必需的元数据清单文件,位于app/src/main/下,用于声明四大组件、权限、特性等,系统在安装和运行时强制读取;缺失或错误将导致构建失败、组件不可见或安装被拒。
AndroidManifest.xml 是什么
AndroidManifest.xml 是每个 Android 应用的必选配置文件,位于模块根目录 app/src/main/ 下。它不是可选的“说明文档”,而是系统在安装、启动、权限校验等环节**强制读取的元数据清单**。没有它,APK 构建会失败;写错结构或关键字段(比如 package 或 android:name),会导致 Activity 找不到、服务无法启动、甚至安装被拒。
如何声明四大组件:Activity、Service、BroadcastReceiver、ContentProvider
所有组件都必须显式出现在 标签下,否则系统完全不可见——哪怕 Java/Kotlin 类存在且逻辑正确,也等于不存在。
-
Activity必须用声明,并通过指定启动入口(如LAUNCHER);否则无法从桌面图标启动 -
Service需声明,前台服务还需在运行时申请FOREGROUND_SERVICE权限(Android 9+) -
BroadcastReceiver分静态注册(manifest 中写)和动态注册(代码中registerReceiver());静态注册的 receiver 在 Android 8.0+ 无法监听隐式广播(如CONNECTIVITY_ACTION),除非是系统白名单动作 -
ContentProvider必须有android:authorities,且通常需设android:exported="true"(Android 12+ 要求显式声明)才能被其他应用访问
常见错误:android:exported 和 targetSdkVersion 的联动影响
Android 12(targetSdkVersion 31)起,所有含 的 Activity、Service、Receiver 必须显式设置 android:exported。漏写会直接导致安装失败,报错:Installation failed due to: 'Error: INSTALL_FAILED_VERIFICATION_FAILURE' 或更具体的 java.lang.SecurityException: Component ... requires android:exported to be explicitly specified。