AndroidManifest应用容器全解析
一、这是什么applicationandroid:name.MyApplicationandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:themestyle/AppTheme!-- 四大组件都放在这里面 --/applicationapplication是AndroidManifest.xml中描述整个应用的核心标签包含应用的全局配置和所有组件声明。核心定位application是整个应用的**“总容器和全局设置中心”**。二、它的地位在Manifest中的位置manifest← 最外层根标签uses-permission.../← 权限在application外uses-feature.../← 特性在application外application← 应用总容器 ⭐activity.../← 界面组件service.../← 服务组件receiver.../← 广播接收器provider.../← 内容提供者/application/manifest关键理解manifest是最外层application在 manifest 里面四大组件都必须写在application里面三、两大核心作用作用 1配置应用全局属性 ⭐设置整个应用的图标、名字、主题等这些是全应用统一的。applicationandroid:iconmipmap/ic_launcher←应用图标android:labelstring/app_name←应用名字android:themestyle/AppTheme← 应用主题作用 2容纳四大组件 ⭐所有的 Activity、Service、Receiver、Provider都必须在这里注册。application...activityandroid:name.MainActivity/serviceandroid:name.MyService//application 打比方application就像一栋大楼的总规划。全局属性 → 大楼的名字、外观、风格统一的四大组件 → 大楼里的各个房间都在楼内四、常用核心属性详解1. android:icon应用图标⭐android:iconmipmap/ic_launcher作用设置应用在桌面/抽屉显示的图标。表现用户在手机桌面看到的那个图标就是它。2. android:label应用名称⭐android:labelstring/app_name作用设置应用的显示名称。表现桌面图标下方的文字、应用列表里的名字。3. android:theme应用主题⭐android:themestyle/AppTheme作用设置整个应用的默认视觉风格颜色、状态栏样式等。表现影响所有界面的整体外观除非某个Activity单独覆盖。4. android:name自定义Application类⭐android:name.MyApplication作用指定一个自定义的 Application 类用于全局初始化。用途App启动时最先执行的地方初始化第三方库如统计、推送SDK存放全局共享数据publicclassMyApplicationextendsApplication{OverridepublicvoidonCreate(){super.onCreate();// App启动时执行全局初始化放这里}}注意不写这个属性系统用默认Application写了就用你自定义的。5. android:allowBackup是否允许备份android:allowBackuptrue作用是否允许系统备份应用数据。值含义true允许备份默认false禁止备份安全性要求高时用6. android:roundIcon圆形图标android:roundIconmipmap/ic_launcher_round作用部分设备支持圆形图标的启动器使用的圆形图标。五、常用属性速查表属性作用常用值android:icon应用图标mipmap/ic_launcherandroid:roundIcon圆形图标mipmap/ic_launcher_roundandroid:label应用名称string/app_nameandroid:theme应用主题style/AppThemeandroid:name自定义Application类.MyApplicationandroid:allowBackup是否允许备份true / falseandroid:supportsRtl支持从右到左布局true / falseandroid:networkSecurityConfig网络安全配置xml/network_config六、完整示例带注释applicationandroid:name.MyApplicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:roundIconmipmap/ic_launcher_roundandroid:labelstring/app_nameandroid:themestyle/AppThemeandroid:supportsRtltrue!-- 主界面Activity --activityandroid:name.MainActivityintent-filteractionandroid:nameandroid.intent.action.MAIN/categoryandroid:nameandroid.intent.category.LAUNCHER//intent-filter/activity!-- 其他Activity --activityandroid:name.SecondActivity/!-- 服务 --serviceandroid:name.MyService/!-- 广播接收器 --receiverandroid:name.MyReceiver/!-- 内容提供者 --providerandroid:name.MyProviderandroid:authoritiescom.example.myapp.provider//application七、application 属性 vs 组件属性继承关系⭐重要概念application设的属性是全局默认值各组件可以单独覆盖。举例主题applicationandroid:themestyle/AppTheme!-- ↑ 全局默认主题 --activityandroid:name.MainActivity/!-- ↑ 没设主题用全局的AppTheme --activityandroid:name.SpecialActivityandroid:themestyle/SpecialTheme/!-- ↑ 单独设了主题用自己的SpecialTheme --/application规则组件没设→ 用 application 的继承组件设了→ 用自己的覆盖 打比方application 属性像公司统一着装规定某个部门组件可以有自己的特殊着装覆盖没特殊规定的就按公司统一的来。八、常见错误与注意事项错误后果把组件写在 application外面组件无法识别报错icon/label 引用了不存在的资源编译失败android:name 类路径写错App启动崩溃忘记声明必要的组件组件无法使用⚠️ 关键提醒四大组件必须在application内部声明否则系统不认识它们。九、核心总结application是应用的总容器和全局设置中心位于 manifest 内。两大核心作用配置全局属性图标、名称、主题等容纳四大组件Activity、Service、Receiver、Provider最常用属性icon→ 应用图标label→ 应用名称theme→ 应用主题name→ 自定义Application类全局初始化继承关系application 属性是全局默认值组件可单独覆盖。关键规则四大组件必须写在 application内部。记忆口诀“application是总管全局属性它来定四大组件里面装子组件能来覆盖它”。