AndroidManifest.xml文件有什么用 安卓清单文件标签详解

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

AndroidManifest.xml 是每个 Android 应用的“身份证”和“运行说明书”。它不参与代码逻辑,但系统启动、组件调用、权限校验、安装验证等所有关键环节都依赖它。没有正确配置,应用可能无法安装、闪退、收不到广播,甚至被系统拒之门外。

声明应用基本信息与唯一身份

文件最外层的 标签通过 package 属性指定应用的全局唯一包名(如 com.example.myapp),这是系统识别和区分应用的核心依据。同时定义:

  • android:versionCodeandroid: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_LOCATIONCAMERA。危险权限还需运行时二次请求
  • 定义权限(:自建权限供其他应用申请,配合 android:protectionLevel 控制访问等级(如 signature 级别要求同签名)
  • 组件上还可加 android:permission 属性,强制调用方必须声明对应权限才能访问该组件

适配兼容性与设备能力

确保应用只安装在支持的设备上,避免崩溃或功能异常:

  • 指定 minSdkVersion(最低支持系统版本)和 targetSdkVersion(目标优化版本),影响行为变更策略
  • 声明硬件依赖,如 android:name="android.hardware.camera";设 required="false" 表示非必需,无该硬件也能安装
  • android:configChanges 协助处理屏幕适配与配置变更(如横竖屏切换)