17370845950

Android的AndroidManifest.xml文件有什么用 权限声明方法
AndroidManifest.xml 是 Android 应用的必备配置文件,用于声明包名、版本、图标、组件、权限、硬件需求及安全兼容性设置;缺失或错误将导致应用无法安装或运行异常。

AndroidManifest.xml 是每个 Android 应用的“身份证”和“说明书”,系统靠它识别应用、启动组件、判断能做什么、以及是否允许访问敏感资源。没它,应用根本跑不起来。

声明基本信息和唯一身份

这是整个应用的起点,告诉系统“我是谁”“叫什么”“长什么样”:

  • package:全局唯一的包名,安装、升级、进程命名都靠它,比如 com.example.myapp
  • android:label:用户看到的应用名称(通常取自 strings.xml)
  • android:iconandroid:roundIcon:桌面图标和圆角图标资源路径
  • android:versionCodeandroid:versionName:内部版本号(整数递增)和对外显示的版本字符串(如 “2.1.0”)

注册四大核心组件

所有 Activity、Service、BroadcastReceiver、ContentProvider 都必须在这里显式声明,否则系统完全看不见它们:

  • 主界面 Activity 要加 ,包含 LAUNCHER 类别才能出现在桌面
  • 后台 Service 即使不暴露给其他应用,也得写进去,否则 startService() 会直接崩溃
  • BroadcastReceiver 若是动态注册的可不写,但静态注册(如监听开机广播)必须声明
  • ContentProvider 默认 exported="false",要共享数据才需设为 true 并配权限

申请运行所需权限

权限不是代码里调用就自动有的,必须先在清单里“报备”,系统才可能授予:

  • 声明需要的权限
  • 危险权限(如位置、通讯录、存储)在 Android 6.0+ 还需运行时二次申请,但清单声明是前提
  • 普通权限(如 INTERNET、VIBRATE)只要声明,安装时就自动授予
  • 想让应用在无摄像头的设备上也能安装?加上

控制安全与兼容性

除了功能,这个文件还管“能不能”和“怎么用”:

  • 决定最低支持系统和行为适配目标
  • android:exported 属性决定组件是否能被其他应用调用(Android 12+ 强制要求显式设置)
  • android:sharedUserId 可用于多个 APK 共享数据和进程(需签名一致)
  • android:supportsRtl="true" 表示支持从右到左语言布局

基本上就这些。它不复杂,但容易忽略细节——少写一个 permission 或漏掉 exported,轻则功能异常,重则安装失败或被系统拦截。