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
- AndroidManifest.xml文件配置详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml 文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml文件详解
- AndroidManifest.xml 文件详解
- AngularJS:如何使用自定义指令来取代ng-repeat
- 火箭鼠的控制脚本
- 圆图片
- iOS知识---针对多个显示内容空间不定内容长度的显示问题Content Hugging 和 Content Compression Resistance
- Mac 更新系统后无法正常启动
- AndroidManifest.xml文件配置详解
- 解决tomcat内存溢出有关问题
- Laravel工程搭建
- android 基础 Unicode编码统一标准 utf-8
- Spring SetFactoryBean实例
- 如何在 Linux 终端中知道你的公有 IP
- word2vec 源码 以及 注释
- django中的模型为什么返回的是对象
- Runtime全方位装逼指南