AndroidManifest.xml文件配置详解

来源:互联网 发布:如何制作淘宝店铺模板 编辑:程序博客网 时间:2024/05/21 12:49

一、清单文件结构

<?xml version="1.0" encoding="utf-8"?><manifest>    <uses-permission />    <permission />    <permission-tree />    <permission-group />    <instrumentation />    <uses-sdk />    <uses-configuration />      <uses-feature />      <supports-screens />      <compatible-screens />      <supports-gl-texture />      <application>        <activity>            <intent-filter>                <action />                <category />                <data />            </intent-filter>            <meta-data />        </activity>        <activity-alias>            <intent-filter> . . . </intent-filter>            <meta-data />        </activity-alias>        <service>            <intent-filter> . . . </intent-filter>            <meta-data/>        </service>        <receiver>            <intent-filter> . . . </intent-filter>            <meta-data />        </receiver>        <provider>            <grant-uri-permission />            <meta-data />            <path-permission />        </provider>        <uses-library />    </application></manifest>

二、清单文件详解

<uses-permission>

申明使用的权限

<uses-permission android:name="string"        android:maxSdkVersion="integer" />//android:name为使用的权限名称//android:maxSdkVersion表示此版本以下(含)的SDK需要此权限

<permission>

自定义权限

<permission android:description="string resource"            android:icon="drawable resource"            android:label="string resource"            android:name="string"            android:permissionGroup="string"            android:protectionLevel=["normal" | "dangerous" |                                     "signature" | "signatureOrSystem"] />//android:description权限描述//android:label展示给用户的权限标签名称//android:name权限名称,也就是在uses-permission中android:name使用的字符串,除非是使用相同签名的应用,否则不允许定义相同名称的权限//android:permissionGroup权限组//android:protectionLevel权限保护级别,normal默认值,系统自动授权;dangerous高风险权限,需要用户手动授权;signature只有相同签名的应用才会授权;signatureOrSystem只有签名相同或者为系统应用才会授权

<permission-tree>

权限树

<permission-tree android:icon="drawable resource"                 android:label="string resource"                 android:name="string" />//android:icon图标//android:label标签//android:name权限树名称,以包名的方式命名,且至少要有两个.,例如com.example.base是正确的,com.example是错误的

<permission-group>

权限组

<permission-group android:description="string resource"                  android:icon="drawable resource"                  android:label="string resource"                  android:name="string" />//android:description描述//android:icon图标//android:label标签//android:name权限组名称,同<permission>标签下的android:permissionGroup

<instrumentation>

单元测试

<instrumentation android:functionalTest=["true" | "false"]                 android:handleProfiling=["true" | "false"]                 android:icon="drawable resource"                 android:label="string resource"                 android:name="string"                 android:targetPackage="string" />//android:functionalTest是否进行单元测试//android:handleProfiling是否开启分析功能//android:label标签//android:name需要进行单元测试的类路径//android:targetPackage需要进行单元测试的包名//单元测试示例:http://www.cnblogs.com/tinyphp/p/4030734.html

<uses-sdk>

指定运行的SDK版本

<uses-sdk android:minSdkVersion="integer"          android:targetSdkVersion="integer"          android:maxSdkVersion="integer" />//android:minSdkVersion指定最小的运行版本//android:targetSdkVersion指定运行的目标版本//android:maxSdkVersion指定最大的运行版本,最好不要指定此值,阻碍app将来在更高版本的api上运行

<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"] />  //android:reqFiveWayNav这个属性用于指定应用程序是否需要五向导航控制,如果设置为true,则需要,否则不需要。五向控制是指能够上、下、左、右移动所选择的对象,并提供调用当前选择对象的方法。它可以是一个D-pad(方向板)、轨迹球等。如果应用程序需要一个方向控制,但不是一种特殊类型的控制,就可以把这个属性设置为true,并且忽略reqNavigation属性。但是,如果应用程序需要一种特殊的方向控制类型,那么就可以忽略这个属性,并用reqNavigation属性的设置来代替。  //android:reqHardKeyboard是否需要硬键盘  //android:reqKeyboardType指定需要的键盘类型,undefined没有指定,任何类型都可以;nokeys不需要键盘;qwerty标准的传统键盘;twelvekey需要十二个按键的键盘,例如像拨打电话一样的键盘(0-9、*、#)  //reqNavigation指定导航设备,undefined没有指定,任何类型都可以;nonav不需要导航设备;dpad指定D-pad;trackball指定轨迹球;wheel指定滚轮  //android:reqTouchScreen指定触屏方式,undefined没有指定,notouch不需要触屏;stylus手写笔触屏;finger手指触屏

<uses-feature>

申明使用的软硬件功能

<uses-feature  android:name="string"  android:required=["true" | "false"]  android:glEsVersion="integer" />  //android:name功能名称,如android.hardware.bluetooth表示需要蓝牙  //android:required表示设备是否需要该功能  //android:glEsVersion指定OpenGl Es的版本,它的高16位代表主版本号,低16位代表次要版本号,如:要是指定OpenGL ES的版本号是2.0,那么就要设置为0x00020000。要指定的OpenGL ES的版本号是2.1,就要设置为0x00020001。

<supports-screens>

指定应用支持的屏幕尺寸

<supports-screens android:resizeable=["true"| "false"]                  android:smallScreens=["true" | "false"]                  android:normalScreens=["true" | "false"]                  android:largeScreens=["true" | "false"]                  android:xlargeScreens=["true" | "false"]                  android:anyDensity=["true" | "false"]                  android:requiresSmallestWidthDp="integer"                  android:compatibleWidthLimitDp="integer"                  android:largestWidthLimitDp="integer"/>//android:resizeable是否可以调整尺寸,已过期//android:smallScreens是否支持较小尺寸的屏幕,默认值是true//android:normalScreens是否支持普通尺寸的屏幕,默认值是true//android:largeScreens是否支持较大尺寸的屏幕//android:xlargeScreens是否支持超大尺寸的屏幕//android:anyDensity是否支持任何像素密度的设备,默认值是true//android:requiresSmallestWidthDp指定支持最小的像素密度的设备//android:compatibleWidthLimitDp指定兼容的像素密度的设备,即使它比requiresSmallestWidthDp小或者比largestWidthLimitDp大//android:largestWidthLimitDp指定支持最大的像素密度的设备

<application>

程序标签

<application android:allowTaskReparenting=["true" | "false"]             android:allowBackup=["true" | "false"]             android:backupAgent="string"             android:banner="drawable resource"             android:debuggable=["true" | "false"]             android:description="string resource"             android:enabled=["true" | "false"]             android:hasCode=["true" | "false"]             android:hardwareAccelerated=["true" | "false"]             android:icon="drawable resource"             android:isGame=["true" | "false"]             android:killAfterRestore=["true" | "false"]             android:largeHeap=["true" | "false"]             android:label="string resource"             android:logo="drawable resource"             android:manageSpaceActivity="string"             android:name="string"             android:permission="string"             android:persistent=["true" | "false"]             android:process="string"             android:restoreAnyVersion=["true" | "false"]             android:requiredAccountType="string"             android:restrictedAccountType="string"             android:supportsRtl=["true" | "false"]             android:taskAffinity="string"             android:testOnly=["true" | "false"]             android:theme="resource or theme"             android:uiOptions=["none" | "splitActionBarWhenNarrow"]             android:usesCleartextTraffic=["true" | "false"]             android:vmSafeMode=["true" | "false"] >    . . .</application>//android:allowTaskReparenting//android:allowBackup是否允许备份//android:backupAgent指定备份代理,可参考http://www.cnblogs.com/over140/archive/2011/12/11/2284217.html#Register_Backup//android:banner androidTV上的横幅//android:debuggable是否允许调试//android:description应用程序的描述//android:enabled是否可以实例化应用程序的组件,如果为true,则组件是否可以实例化则取决于该组件的enabled值;如果为false,则所有组件都不可实例化;默认值为true//android:hasCode是否包含代码,如果为true,则在组件启动时会加载其代码;如果为false,则在组件启动时不加载其代码;默认值为true//android:hardwareAccelerated是否启用硬件加速,如果为true,则所有的activity和view是否开启硬件加速则取决于它们自身的硬件加速开关;如果为false,则所有的activity和view都不开启硬件加速;如果你设置了minSdkVersion或者targetSdkVersion的值>=14,则默认是true,否则为false;注意如果开启了硬件加速,则有些Canvas的绘图操作会出现异常。//android:icon应用程序的图标//android:isGame是否是游戏//android:killAfterRestore//android:largeHeap是否在大堆中创建进程,若为true,则不保证在所有设备中都有效;false则不使用大堆;默认值为false//android:label应用程序的名称//android:logo http://stackoverflow.com/questions/6735649/android-icon-vs-logo//android:manageSpaceActivity指定管理空间的Activity类名,如果指定此值,则在“应用程序信息”里面的“清除数据”按钮会变成“管理空间”按妞,点击此按钮会跳转到你指定的Activity上,你自己在该Activity上实现清除某些数据的操作,如果不允许用户清空所有数据,此属性是很有效的//android:name指定Application的子类,当一个进程启动后,则会调用该Application的onCreate方法,在应用程序中有多少个进程则就会回调多少次//android:permission指定所有拥有android:permission属性的组件的android:permission值,具体的组件可以重写该值//android:persistent是否时刻保持运行状态,只有系统级别的应用才有效//android:process指定组件在哪个进程中运行,如果名称是":"开头则表示该进程为此应用程序的私有进程,如果名称是以小写字母开头的则是全局进程;当另外一个应用程序拥有和此应用程序相同的sharedUserId和签名时,这两个应用程序的组件可以运行在一个全局进程中,而不能运行在私有进程中;组件中可以重写该属性//android:restoreAnyVersion设置这个属性表示应用程序准备尝试恢复任何备份的数据集,即使备份比设备上当前安装的应用程序的版本要新。这个属性设置为true,即使是在版本不匹配而产生数据兼容性提示的时候,也会允许备份管理来恢复备份的数据,所以要谨慎使用。这个属性的默认值是false。//android:requiredAccountType指定需要的帐号类型//android:restrictedAccountType限制帐号类型//android:supportsRtl是否支持从右到左布局,一般用于支持阿拉伯语/波斯语等从右往左的阅读习惯//android:taskAffinity//android:testOnly指明是否用于测试的应用程序,如果是,则会暴露数据,并且只能通过adb进行安装;默认值为false//android:theme应用程序主题//android:usesCleartextTraffic是否使用未加密的网络流量,默认为true,若设置成false,则在使用http时应用程序会崩溃(https则不会)//android:vmSafeMode指定虚拟机的安全模式,默认值为false,在SDK版本大于8小于22时则会关闭JIT编译器,在SDK版本大于22时则会关闭AOT编译器

<activity>

<activity android:allowEmbedded=["true" | "false"]          android:allowTaskReparenting=["true" | "false"]          android:alwaysRetainTaskState=["true" | "false"]          android:autoRemoveFromRecents=["true" | "false"]          android:banner="drawable resource"          android:clearTaskOnLaunch=["true" | "false"]          android:configChanges=["mcc", "mnc", "locale",                                 "touchscreen", "keyboard", "keyboardHidden",                                 "navigation", "screenLayout", "fontScale",                                 "uiMode", "orientation", "screenSize",                                 "smallestScreenSize"]          android:documentLaunchMode=["intoExisting" | "always" |                                  "none" | "never"]          android:enabled=["true" | "false"]          android:excludeFromRecents=["true" | "false"]          android:exported=["true" | "false"]          android:finishOnTaskLaunch=["true" | "false"]          android:hardwareAccelerated=["true" | "false"]          android:icon="drawable resource"          android:label="string resource"          android:launchMode=["multiple" | "singleTop" |                              "singleTask" | "singleInstance"]          android:maxRecents="integer"          android:multiprocess=["true" | "false"]          android:name="string"          android:noHistory=["true" | "false"]            android:parentActivityName="string"           android:permission="string"          android:process="string"          android:relinquishTaskIdentity=["true" | "false"]          android:screenOrientation=["unspecified" | "behind" |                                     "landscape" | "portrait" |                                     "reverseLandscape" | "reversePortrait" |                                     "sensorLandscape" | "sensorPortrait" |                                     "userLandscape" | "userPortrait" |                                     "sensor" | "fullSensor" | "nosensor" |                                     "user" | "fullUser" | "locked"]          android:stateNotNeeded=["true" | "false"]          android:taskAffinity="string"          android:theme="resource or theme"          android:uiOptions=["none" | "splitActionBarWhenNarrow"]          android:windowSoftInputMode=["stateUnspecified",                                       "stateUnchanged", "stateHidden",                                       "stateAlwaysHidden", "stateVisible",                                       "stateAlwaysVisible", "adjustUnspecified",                                       "adjustResize", "adjustPan"] >       . . .</activity>

未完待续……

0 0
原创粉丝点击