AndroidManifest.xml 是应用的配置核心,声明包名、版本、安装位置及共享用户ID;注册四大组件并控制导出属性;集中管理使用权限与自定义权限;通过 SDK 版本、硬件特性等适配设备兼容性。

AndroidManifest.xml 是每个 Android 应用的“身份证”和“运行说明书”。它不参与代码逻辑,但系统启动、组件调用、权限校验、安装验证等所有关键环节都依赖它。没有正确配置,应用可能无法安装、闪退、收不到广播,甚至被系统拒之门外。
声明应用基本信息与唯一身份
文件最外层的 标签通过 package 属性指定应用的全局唯一包名(如 com.example.myapp),这是系统识别和区分应用的核心依据。同时定义:
-
android:versionCode和android:versionName:用于版本管理和升级判断 -
android:installLocation:控制安装位置(内部存储或外部SD卡) -
android:sharedUserId:允许不同应用共享同一 Linux 用户 ID(需签名一致)
注册四大组件并控制其可见性
所有 Activity、Service、BroadcastReceiver、ContentProvider 必须在该文件中显式声明,否则系统完全不可见。关键细节包括:
- Activity 需配
才能被启动;含ACTION_MAIN+CATEGORY_LAUNCHER的 Activity 是桌面图标入口 - 从 Android 12(API 31)起,
android:exported属性为必填项:设为false表示仅本应用可调用,避免被恶意应用劫持 - Service 默认不导出,但显式启动仍需声明;前台服务还需额外申请
FOREGROUND_SERVICE权限 - BroadcastReceiver 若动态注册(代码中 registerReceiver),可不在此声明;静态注册(清单中)必须写明且受
android:exported约束
管理权限与安全边界
权限分两类,均在此集中管控:
-
使用权限(
):向系统申请能力,如ACCESS_FINE_LOCATION、CAMERA。危险权限还需运行时二次请求 -
定义权限(
):自建权限供其他应用申请,配合android:protectionLevel控制访问等级(如signature级别要求同签名) - 组件上还可加
android:permission属性,强制调用方必须声明对应权限才能访问该组件
适配兼容性与设备能力
确保应用只安装在支持的设备上,避免崩溃或功能异常:
-
指定minSdkVersion(最低支持系统版本)和targetSdkVersion(目标优化版本),影响行为变更策略 -
声明硬件依赖,如android:name="android.hardware.camera";设required="false"表示非必需,无该硬件也能安装 -
和android:configChanges协助处理屏幕适配与配置变更(如横竖屏切换)










