目录
AndroidManifest 官方解释是应用清单(Manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须为AndroidManifest。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。
Android四大组件都需要声明才能使用,每个组件都需要在 AndroidManifest.xml文件中进行配置。
Android四大组件如下:
-
Activity:界面组件,就是一个单独的窗口(例如冷启动应用进入界面的就是launchale-activity)。
-
Service:服务组件,用于在后台完成用户指定的操作(如后台音乐播放)。
-
Cotent provider:内容组件,是一种数据共享型组件,用于向其他组件乃至其他应用共享数据(如短信和联系人应用之间的数据共享)。
-
Broadcast receiver:消息组件,监听/接收应用App发出的广播消息并做出响应(如电话呼入,耳机插入)。
1、<manifest>元素
所有的AndroidManifest.xml 都必须包含<manifest>元素。这是文件的根节点,它必须包含<application>元素,并且指明xmlns:android 和 package。
xmlns:android属性
这个属性定义了android 命名空间。必须设置成“http://schemas.android.com/apk/res/android”。不要手动修改。
package属性
包名也代表着唯一的application ID,用来发布应用。包名由英文字母(大小写均可)、数字和下划线组成。每个独立的名字必须以字母开头。
android:VersionCode属性
内部的版本号。用户表明那个版本更新,这个数字不会显示给用户,显示给用户的是VersionName。这个必须是数字,且不能为16进制
android:VersionName属性
对外发布版本号。
2、<application>元素
应用的声明,包含用于声明每个应用组件的子元素,并且具有会影响所有组件的属性。
其中许多属性(如 icon、label、permission、process、taskAffinity 和allowTaskReparenting)会为组件元素的相应属性设置默认值。其他属性(如debuggable、enabled、description 和 allowClearUserData)则为整个应用设置值,并且不能被组件替换。
android: allowBackup属性
是否允许应用参与备份和恢复基础架构。如果设置为false,则不会为该应用执行备份或恢复,即使采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据),此属性的默认值为true。
3、<permission>元素
声明限制此类应用安全权限
android:name属性
权限的名称
android:protectionLevel属性
出于安全考虑,Android对一些访问进行了限制,比如网络访问(需付费)以及获取联系人(涉及隐私)等。应用程序如果想要进行此类访问,则需要申请相应权限。Android对这些权限进行了四类分级,不同级别的权限对应不同的认证方式。
-
normal:低风险权限,只要申请了就可以使用(在AndroidManifest.xml中添加<uses-permission>标签),安装时不需要用户确认。
-
dangerous:高风险权限,安装时需要用户的确认才可使用;
-
signature:只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它;
-
signatureOrSystem:申请权限的应用数字签名与该应用数字签名相同,或者申请权限的应用为系统应用才可以授权。
4、<uses-permission>元素
指定用户必须授予的系统权限,以便应用正常运行。当(在运行 Android 5.1 和更低版本的设备上)安装应用或(在运行 Android 6.0 和更高版本的设备上)运行应用时,用户需要手动授予权限
5、Activity界面组件
声明实现应用部分可视化界面的 Activity,必须使用 AndroidManifest 中的 <activity> 元素表示所有 Activity。系统不会识别和运行任何未进行声明的Activity。
android:name属性
表示实现 Activity 的类的名称,是 Activity 的子类。
6、Service 服务组件
使用<service>将服务(Service)子类声明为应用的一个组件,服务用于实现长时间运行的后台操作。
7、Receiver 消息组件
使用<receiver> 将广播接收器(BroadcastReceiver 子类)声明为应用的组件之一。广播接收器允许应用接收由系统或其他应用广播的 Intent。
8、Provider 内容组件
应用中的所有内容提供程序都必须在清单文件的<provider>元素中定义,声明内容提供程序组件。
9、<intent-filter>元素
意图过滤器,主要用来过滤隐式意图。当用户进行一项操作的时候,Android系统会根据配置的意图过滤器来寻找可以相应该操作的组件服务,由<action>、<category> 和 <data> 三个属性构成。在四大组件中均可以存在此元素