AndroidManifest.xml 主配置清单文件 各句解释
2014-08-17
自动生成文件
1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- package="com.example.helloworld" 包名 --> 3 <!-- android:versionCode="1" 版本号 --> 4 <!-- 5 android:installLocation="auto" 自动寻找安装路径,ROM或SDcard,默认 6 internalOnly 只能安装ROM上 7 preferExternal 安装在SD卡上 8 --> 9 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 10 package="com.example.halloworld" 11 android:versionCode="1" 12 android:versionName="1.0" > 13 14 <!--android:versionName="1.0" 版本名称 --> 15 16 17 <!-- android:minSdkVersion="8" 运行的安卓最低版本 --> 18 <uses-sdk 19 android:minSdkVersion="8" 20 android:targetSdkVersion="19" /> 21 <!-- 运行的安卓最高版本 --> 22 23 24 <!-- application:表示应用程序的配置 只能包含一个 --> 25 <!-- android:allowBackup="true" 允许备份 --> 26 <!-- android:icon="@drawable/ic_launcher" 设置图标,@表示R.java --> 27 <!-- android:label="@string/app_name" 程序名称,标题 --> 28 <!-- android:theme 主题 --> 29 <application 30 android:allowBackup="true" 31 android:icon="@drawable/ic_launcher" 32 android:label="@string/app_name" 33 android:theme="@style/AppTheme" > 34 35 36 <!--activity:配置文件中要使用的activity文件 --> 37 <!-- android:name="com.example.helloworld.MainActivity" activity的类名 --> 38 <!-- 每增加一个Activity就要在这里写一个<activity> --> 39 <activity 40 android:name="com.example.halloworld.MainActivity" 41 android:label="@string/app_name" > 42 43 <!-- 程序名称 --> 44 <!-- intent-filter 意图过滤器:用来过滤用户的一些动作和操作 --> 45 <intent-filter> <!-- intent-filter:程序一执行就运行此Activity --> 46 <action android:name="android.intent.action.MAIN" /> 47 <!-- "android.intent.action.MAIN"决定最先启动的activity --> 48 49 <category android:name="android.intent.category.LAUNCHER" /> 50 <!-- 决定程序是否显示在程序列表里 --> 51 </intent-filter> 52 </activity> 53 </application> 54 55 </manifest>
Android配置文件中主要元素与标签
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <manifest> 4 5 <!-- 基本配置 --> 6 <uses-permission /> 7 <permission /> 8 <permission-tree /> 9 <permission-group /> 10 <instrumentation /> 11 <uses-sdk /> 12 <uses-configuration /> 13 <uses-feature /> 14 <supports-screens /> 15 <compatible-screens /> 16 <supports-gl-texture /> 17 18 <!-- 应用配置 --> 19 <application> 20 21 <!-- Activity 配置 --> 22 <activity> 23 <intent-filter> 24 <action /> 25 <category /> 26 <data /> 27 </intent-filter> 28 <meta-data /> 29 </activity> 30 31 <activity-alias> 32 <intent-filter> . . . </intent-filter> 33 <meta-data /> 34 </activity-alias> 35 36 <!-- Service 配置 --> 37 <service> 38 <intent-filter> . . . </intent-filter> 39 <meta-data/> 40 </service> 41 42 <!-- Receiver 配置 --> 43 <receiver> 44 <intent-filter> . . . </intent-filter> 45 <meta-data /> 46 </receiver> 47 48 <!-- Provider 配置 --> 49 <provider> 50 <grant-uri-permission /> 51 <meta-data /> 52 </provider> 53 54 <!-- 所需类库配置 --> 55 <uses-library /> 56 57 </application> 58 59 </manifest>
Android配置文件中主要元素与标签的用法
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <manifest> <!-- AndroidManifest.xml配置文件的根元素,必须包含一个<application>元素并且指定xlmns:android和package属性。 --> 4 <!-- 标签语法范例 --> 5 <!-- <manifest xmlns:android="http://schemas.android.com/apk/res/android" 6 <!-- xlmns:android指定了Android的命名空间,默认情况下是“http://schemas.android.com/apk/res/android”; 7 package="string" <!-- package是标准的应用包名,也是一个应用进程的默认名称, 8 android:sharedUserId="string" 9 android:sharedUserLabel="string resource" 10 android:versionCode="integer" <!-- android:versionCode是给设备程序识别版本用的,必须是一个整数值代表app更新过多少次; -- 11 android:versionName="string" <!-- android:versionName则是给用户查看版本用的,需要具备一定的可读性,比如“1.0.0”这样的 -- 12 android:installLocation=["auto" | "internalOnly" | "preferExternal"] > --> 13 14 <!-- 基本配置 --> 15 <uses-permission /> <!-- 权限设定标签 --> 16 <!-- <!-- 网络相关功能 17 <uses-permission android:name="android.permission.INTERNET" /> 18 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 19 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 20 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 21 <!-- 读取电话状态 22 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 23 <!-- 通知相关功能 24 <uses-permission android:name="android.permission.VIBRATE" /> --> 25 <permission /> <!-- 权限声明标签,定义了供给<uses-permission>使用的具体权限 --> 26 <!-- 通常情况下我们不需要为自己的应用程序声明某个权限,除非需要给其他应用程序提供可调用的代码或者数据,这个时候你才需要使用<permission>标签。 --> 27 <!-- 可以和<permission-group>以及<permission-tree>配合使用来构造更有层次的、更有针对性权限系统 --> 28 <!-- 标签语法范例 --> 29 <!-- <permission android:description="string resource" 30 android:icon="drawable resource" 31 android:label="string resource" 32 android:name="string" 33 android:permissionGroup="string" 34 android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] /> --> 35 <permission-tree /> 36 <permission-group /> 37 <instrumentation /> <!-- 用于声明Instrumentation测试类来监控Android应用的行为并应用到相关的功能测试中 --> 38 <!-- Instrumentation对象是在应用程序的组件之前被实例化的,这点在组织测试逻辑的时候需要被考虑到 --> 39 <!-- 标签语法范例 --> 40 <!-- <instrumentation android:functionalTest=["true" | "false"] 测试功能开关 41 android:handleProfiling=["true" | "false"] 调试功能开关 42 android:icon="drawable resource" 43 android:label="string resource" 44 android:name="string" 45 android:targetPackage="string" /> 测试用例目标对象--> 46 <uses-sdk /> <!-- 用于指定Android应用中所需要使用的SDK的版本 --> 47 <!-- 语法范例 --> 48 <!-- <uses-sdk android:minSdkVersion="integer" 49 android:targetSdkVersion="integer" 目标版本 50 android:maxSdkVersion="integer" /> --> 51 <uses-configuration /> <!-- <uses-configuration>与<uses-feature>这两个标签都是用于描述应用所需要的硬件和软件特性 --> 52 <!-- 语法范例 --> <!-- 主要用于支持一些特殊的设备中的应用, --> 53 <!-- <uses-configuration android:reqFiveWayNav=["true" | "false"] 设备带有D-pad或者Trackball这些特殊硬件,就需要设置为true 54 android:reqHardKeyboard=["true" | "false"] 带有硬件键盘,需要被设置为true 55 android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"] 56 android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"] 57 android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] /> --> 58 <uses-feature /> 59 <!-- 语法范例 --> 60 <!-- <uses-feature android:name="string" 如果设备需要支持蓝牙,可以使用<uses-feature android:name="android.hardware.bluetooth" />来支持这个功能 61 android:required=["true" | "false"] 62 android:glEsVersion="integer" /> --> 63 <uses-library> <!-- 用于指定Android应用可使用的用户库,除了系统自带的android.app、android.content、android.view和android.widget这些默认类库之外,有些应用可能还需要一些其他的Java类库作为支持, --> 64 <!-- 这种情况下我们就可以使用<uses-library>标签让ClassLoader加载其类库供Android应用运行时用。<uses-library>标签的用法很简单, --> 65 <!-- 语法范例 --> 66 <!-- <uses-library android:name="string" 67 android:required=["true" | "false"] /> --> 68 <supports-screens /> <!-- 指定支持的屏幕特征 --> 69 <!-- 语法范例 --> 70 <!-- <supports-screens android:resizeable=["true"| "false"] 屏幕自适应属性 71 android:smallScreens=["true" | "false"] 小屏 72 android:normalScreens=["true" | "false"] 中屏 73 android:largeScreens=["true" | "false"] 大屏 74 android:xlargeScreens=["true" | "false"] 特大屏 75 android:anyDensity=["true" | "false"] 按屏幕渲染图像属性 76 android:requiresSmallestWidthDp="integer" 最小屏幕宽度属性 77 android:compatibleWidthLimitDp="integer" 78 android:largestWidthLimitDp="integer"/> --> 79 <compatible-screens /> 80 <supports-gl-texture /> 81 82 <!-- 应用配置 --> 83 <application> <!-- 应用配置的根元素,位于<manifest>下层,包含所有与应用有关配置的元素,其属性可以作为子元素的默认属性, --> 84 <!-- 语法范例 --> 85 <!-- <application android:allowTaskReparenting=["true" | "false"] 86 android:backupAgent="string" 87 android:debuggable=["true" | "false"] 88 android:description="string resource" 89 android:enabled=["true" | "false"] 90 android:hasCode=["true" | "false"] 91 android:hardwareAccelerated=["true" | "false"] 92 android:icon="drawable resource" 93 android:killAfterRestore=["true" | "false"] 94 android:label="string resource" 应用名 95 android:logo="drawable resource" 应用图标 96 android:manageSpaceActivity="string" 97 android:name="string" 98 android:permission="string" 99 android:persistent=["true" | "false"] 100 android:process="string" 101 android:restoreAnyVersion=["true" | "false"] 102 android:taskAffinity="string" 103 android:theme="resource or theme" > 应用主题--> 104 105 <!-- Activity 配置 --> 106 <activity> <!-- Activity活动组件(即界面控制器组件)的声明标签,Android应用中的每一个Activity都必须在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。 --> 107 <!-- <activity>标签还可以包含用于消息过滤的<intent-filter>元素,可用于存储预定义数据的<meta-data>元素 --> 108 <!-- 语法范例 --> 109 <!-- <activity android:allowTaskReparenting=["true" | "false"] 110 android:alwaysRetainTaskState=["true" | "false"] 111 android:clearTaskOnLaunch=["true" | "false"] 112 android:configChanges=["mcc", "mnc", "locale", 113 "touchscreen", "keyboard", "keyboardHidden", 114 "navigation", "orientation", "screenLayout", 115 "fontScale", "uiMode"] 116 android:enabled=["true" | "false"] 117 android:excludeFromRecents=["true" | "false"] 118 android:exported=["true" | "false"] 119 android:finishOnTaskLaunch=["true" | "false"] 120 android:hardwareAccelerated=["true" | "false"] 121 android:icon="drawable resource" 122 android:label="string resource" 123 android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"] 加载模式 124 android:multiprocess=["true" | "false"] 125 android:name="string" Activity对应类名 126 android:noHistory=["true" | "false"] 127 android:permission="string" 128 android:process="string" 129 android:screenOrientation=["unspecified" | "user" | "behind" | 130 "landscape" | "portrait" | 131 "sensor" | "nosensor"] 132 android:stateNotNeeded=["true" | "false"] 133 android:taskAffinity="string" 134 android:theme="resource or theme" 对应主题 135 android:windowSoftInputMode=["stateUnspecified", 键盘交互模式 136 "stateUnchanged", "stateHidden", 137 "stateAlwaysHidden", "stateVisible", 138 "stateAlwaysVisible", "adjustUnspecified", 139 "adjustResize", "adjustPan"] > --> 140 <intent-filter> <!-- 用于Intent消息过滤器的声明 --> 141 <!-- <intent-filter>元素可以放在<activity>、<activity-alias>、<service>和<receiver>元素标签中, 142 来区分可用于处理消息的Activity控制器、Service服务和广播接收器Broadcast Receiver --> 143 <action /> <!-- 用于描述具体消息的名称 --> 144 <category /> <!-- 用于表示能处理消息组件的类别 --> 145 <data /> <!-- 用于描述消息需要处理的数据格式,可以使用正则表达式来限定数据来源 --> 146 </intent-filter> 147 <!-- 语法范例 --> 148 <!-- <intent-filter android:icon="drawable resource" 149 android:label="string resource" 150 android:priority="integer" > 151 <action android:name="string" /> 152 <category android:name="string" /> 153 <data android:host="string" 154 android:mimeType="string" 155 android:path="string" 156 android:pathPattern="string" 157 android:pathPrefix="string" 158 android:port="string" 159 android:scheme="string" /> 160 </intent-filter> --> 161 <meta-data /> <!-- 用于存储预定义数据 --> 162 </activity> 163 164 <activity-alias> <!-- Activity组件别名的声明标签,简单来说就是Activity的快捷方式, --> 165 <!-- Activity别名也是一个独立的Activity,可以拥有自己的<intent-filter>和<meta-data>元素 --> 166 <!-- 语法范例 --> 167 <!-- <activity-alias android:enabled=["true" | "false"] 别名开关 168 android:exported=["true" | "false"] 169 android:icon="drawable resource" 170 android:label="string resource" 171 android:name="string" Activity别名名称 172 android:permission="string" 权限控制 173 android:targetActivity="string" > 其相关的Activity名--> 174 <intent-filter> . . . </intent-filter> 175 <meta-data /> <!-- 用于存储预定义数据, --> 176 <!-- 和<intent-filter>类似,<meta-data>也可以放在<activity>、<activity-alias>、<service>和<receiver>这四个元素标签中。 177 Meta数据一般会以键值对的形式出现,个数没有限制,而这些数据都将被放到一个Bundle对象中, 178 程序中我们则可以使用ActivityInfo、ServiceInfo甚至ApplicationInfo对象的metaData属性中读取。 179 假设我们在一个Activity中定义了一个<meta-data>元素,相关示例用法如下。 180 181 <activity...> 182 <meta-data android:name="testData" android:value="Test Meta Data"></meta-data> 183 </activity> 184 185 ActivityInfo info = this.getPackageManager() 186 .getActivityInfo(getComponentName(), PackageManager.GET_META_DATA); 187 String testData = info.metaData.getString("testData"); 188 System.out.println("testData:" + testData); --> 189 </activity-alias> 190 191 <!-- Service 配置 --> 192 <service> <!-- Service服务组件的声明标签,用于定义与描述一个具体的Android服务, --> 193 <intent-filter> . . . </intent-filter> 194 <meta-data/> 195 </service> 196 <!-- 语法范例 --> 197 <!-- <service android:enabled=["true" | "false"] 服务开关 198 android:exported=["true" | "false"] 199 android:icon="drawable resource" 服务图标 200 android:label="string resource" 服务描述 201 android:name="string" Service服务类名 202 android:permission="string" 203 android:process="string" > --> 204 205 <!-- Receiver 配置 --> 206 <receiver> <!-- Boardcast Receiver广播接收器组件的声明标签,用于定义与描述一个具体的Android广播接收器 --> 207 <intent-filter> . . . </intent-filter> 208 <meta-data /> 209 </receiver> 210 <!-- 语法范例 --> 211 <!-- <receiver android:enabled=["true" | "false"] 接收器开关 212 android:exported=["true" | "false"] 213 android:icon="drawable resource" 接收器图标 214 android:label="string resource" 接收器描述 215 android:name="string" Boardcast Receiver接收器类名 216 android:permission="string" 217 android:process="string" > --> 218 219 <!-- Provider 配置 --> 220 <provider> <!-- Content Provider内容提供者的声明标签 --> 221 <grant-uri-permission /> 222 <meta-data /> 223 </provider> 224 <!-- 语法范例 --> 225 <!-- <provider android:authorities="list" 内容提供者标识名称 226 android:enabled=["true" | "false"] 227 android:exported=["true" | "false"] 228 android:grantUriPermissions=["true" | "false"] 对指定URI授予权限标识 229 android:icon="drawable resource" 230 android:initOrder="integer" 231 android:label="string resource" 232 android:multiprocess=["true" | "false"] 233 android:name="string" 234 android:permission="string" 235 android:process="string" 236 android:readPermission="string" 读权限 237 android:syncable=["true" | "false"] 238 android:writePermission="string" > 写权限--> 239 <!-- 所需类库配置 --> 240 <uses-library /> 241 242 </application> 243 244 </manifest>