AndroidManifest.xml 是 Android 应用强制存在的核心配置文件,声明包名、组件、权限、设备特性等,系统依赖其校验与调度;缺失或配置错误将导致安装失败、闪退、功能异常等问题。

AndroidManifest.xml 是每个 Android 应用的“身份证”和“总调度表”,它声明了应用的基本信息、组件(Activity、Service、BroadcastReceiver、ContentProvider)、权限需求、支持的设备特性等,系统在安装和运行时都依赖它做校验和调度。
核心作用:告诉系统“你是谁、能做什么、需要什么”
它不是可选配置,而是强制存在的 XML 文件,位于模块根目录(如 app/src/main/AndroidManifest.xml)。没有它,APK 无法安装;配错它,可能造成闪退、权限失效、页面打不开、后台服务不启动等问题。
基本结构与关键标签说明
一个最小可用的清单文件包含
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
android:exported="true">
常用配置项与注意事项
- android:exported:Android 12+ 强制要求。值为 true 表示组件可被其他应用调用(如 Launcher Activity、公开 Service),false 则仅限本应用内访问。漏配或误配会导致启动失败或安全警告
-
权限声明:用
声明运行时或安装时需要的权限,例如:
注意:危险权限(如定位、存储、相机)还需在代码中动态申请 -
适配属性:比如 android:targetSdkVersion 在 build.gradle 中定义,但清单中可通过
(已弃用)或间接影响行为;android:hardwareAccelerated、android:supportsRtl 等可在 或 中设置 -
Intent Filter 配置:决定组件如何被隐式 Intent 触发。除了 LAUNCHER,还可配置自定义 Scheme(如
myapp://open?param=1)或响应特定文件类型(如打开 PDF)
多模块/动态功能场景下的清单合并
使用 Android Gradle 插件后,清单文件支持自动合并。主 module 的 AndroidManifest.xml 是基础,library module 和 dynamic feature module 可各自提供清单片段,AGP 会按优先级(main > flavor > buildType > library)合并。冲突时可通过 tools:replace、tools:remove、tools:node 等属性控制(需在 manifest 根节点声明 xmlns:tools="http://schemas.android.com/tools")。
例如合并时避免重复声明权限,或覆盖某个 activity 的 label:
android:label="@string/splash_label"
tools:replace="android:label" />
基本上就这些。它不复杂,但容易忽略细节——尤其是 exported、权限、intent-filter 和合并逻辑。改完记得 clean + rebuild,再真机验证是否能正常启动和跳转。









