AndroidManifest.xml文件与build.gradle在Android项目中都是两大灵魂人物,在项目中的地位举足轻重。熟练掌握AndroidManifest文件的配置,就能在整个项目的开发中有更强大的把控力。
-
manifest标签:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.dev">
package 声明包名;
xmlns 命名空间的声明,使得各种Android系统级的属性能让我们使用。
installLocation 程序的安装位置,
有三个值可以选择:internalOnly、auto、preferExternal
分别为只能装内置内存中、可相互转移,优先装入SD卡中。
uses-configuration标签
这个属性用于指定该应用程序所需要的硬件和软件功能。
<uses-configuration android:reqFiveWayNav=["true" | "false"]
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
supports-screens标签
声明应用支持的分辨率类型
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
resizeable 是否可以调整尺寸,增加屏幕适配的兼容性
anyDensity 是否包含了能够适用于任何屏幕密度的资源。
uses-permission标签
应用所需权限的声明,常用权限声明
<!-- 用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 用于访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 拨打电话 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- 调用相机 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!-- 调用闪光灯 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- 震动器 -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 读取通讯录 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
application标签
设置应用整体属性
name 设置Application
label 设置应用名
icon 启动图标
theme 应用统一theme
largeHeap 请求开辟更大的应用内存
hardwareAccelerated 全局开启硬件加速。不推荐在application中开启,非要开可以在单独使用的activity标签中开,避免过大内存开销。
debuggable 指定应用程序是否能够被调试
process 这个属性用于定义一个进程名称
activity标签
screenOrientation 设置当前Activity固定屏幕方向
configChanges 配置的内容变化是否重启生命周期
launchMode 设置当前Activity启动模式
exported 设置该activity是否可以被其他应用启动,设置为true也可以直接启动就进入该activity
windowSoftInputMode 共9个属性,可以分别为软键盘设置始终隐藏,始终显示,大小调整等类型
taskAffinity 指定在任务栈的标识
hardwareAccelerated 开启硬件加速
meta-data标签
这个元素用name-value对的格式给其父组件提供任意可选的数据。
比如各种第三方sdk设置key使用的方式。
<!-- 友盟Key配置 -->
<meta-data
android:name="UMENG_APPKEY"
android:value="" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
<!-- 高德地图 -->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="" />