ACCESSAndroidManifest.xml配置文件详解(转发)

对此一些行使或许游戏的话,只可以扶助有个别屏幕大小的设备大概在好几设备中的效果比较好,我们就会采纳<supports-screens>标签来指定匡助的显示器特征。其中比较根本的质量蕴涵:显示器自适应属性android:resizeable,小屏(android:smallScreens)、中屏(android:normalScreens)、大屏(android:largeScreens)和特大屏(android:xlargeScreens)支持属性,按屏幕渲染图像属性android:anyDensity以及最小显示器宽度属性android:requiresSmallestWidthDp等。<supports-screens>标签的语法范例如下。

<uses-sdk android:minSdkVersion=”integer” 
    android:targetSdkVersion=”integer”
    android:maxSdkVersion=”integer” />

<application>

AndroidManifest.xml配置文件对此Android应用开发以来是格外首要的基础知识,本文意在总括该配置文件中非常主要的用法,以便日后查阅。上边是一个规范的AndroidManifest.xml文件样例。

ACCESS 1%5D9PGF.gif)

<intent-filter>与<action>、<category>、<data>

<application android:allowTaskReparenting=[“true” | “false”]
    android:backupAgent=”string”
    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:killAfterRestore=[“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:taskAffinity=”string”
    android:theme=”resource or theme” >
… …
</application>

用于指定Android应用中所须求运用的SDK的版本,比如大家的使用必须运转于Android
2.0上述版本的体系SDK之上,那么就须求指定应用支撑最小的SDK版本数为5;当然,各个SDK版本都会有指定的整数值与之相应,比如大家最常用的Android
2.2.x的版本数是8。当然,除了可以指定最低版本之外,<uses-sdk>标签还足以指定最高版本和目的版本,语法范例如下。

<meta-data>

用于指定Android应用可应用的用户库,除了系统自带的android.app、android.content、android.view和android.widget这几个暗中认同类库之外,某个应用大概还亟需部分其余的Java类库作为支撑,那种意况下我们就足以利用<uses-library>标签让ClassLoader加载其类库供Android应用运行时用。<uses-library>标签的用法很粗略,以下是语法范例。

<intent-filter>用于Intent音讯过滤器的宣示,在前头的2.1.3.2节中大家曾经对Android应用框架中的Intent新闻作过相比详细的牵线,大家精晓到Intent音信对于Android应用连串的话,是不行主要的“粘合剂”,<intent-filter>成分得以放在<activity>、<activity-alias>、<service>和<receiver>成分标签中,来分裂可用来拍卖新闻的Activity控制器、Service服务和广播接收器Broadcast
Receiver。别的,大家还明白Intent新闻还包罗知名称、动作、数据、种类等多少个重点性质。那一点与该标签的写法也有自然的涉及,比如<intent-filter>中务必带有有<action>成分,即用于描述具体音讯的称号;<category>标签则用于表示能处理新闻组件的品类,即该Action所符合的类型;而<data>元素则用来描述音信须要处理的数量格式,大家竟然还足以行使正则表明式来界定数量来自。当然,那么些要素和标签的切实可行用法大家还亟需渐渐学习,上面是正规<intent-filter>成分标签的语法范例。

那七个标签都以用于描述应用所急需的硬件和软件天性,以便幸免利用在一向不这一个特色的设备上设置。<uses-configuration>标签中,比如有个别设备带有D-pad或然Trackball那一个独特硬件,那么android:reqFiveWayNav属性就须要安装为true;而只要有一对装备带有硬件键盘,android:reqHardKeyboard也须要被装置为true。其余,固然设备亟需协理Bluetooth,大家得以使用<uses-feature
android:name=”android.hardware.bluetooth”
/>来支撑那一个作用。这八个标签首要用以协理部分异样的设施中的应用,多少个标签的语法范例分别如下。

除Activity、Service和Boardcast
Receiver之外的另2个“四大组件”,相当于Content
Provider内容提供者的宣示标签。关于内容提供者组件的定义和用法请参见2.1.4.4节的始末,不再赘述。<provider>标签除了和其余零件相同的android:name、android:icon和android:label等基础属性之外,还提供了用于扶助其效劳的异样性质,如:内容提供者标识名称android:authorities,对点名U哈弗I授予权限标识android:grantUriPermission以及具体的读、写权限,即android:readPermission和android:writePermission等。当然,这个属性的求实用法大家还索要逐步学习,以下是<provider>标签的语法范例。

<supports-screens>

ActivityInfo info = this.getPackageManager()
    .getActivityInfo(getComponentName(),
PackageManager.GET_META_DATA);
String testData = info.metaData.getString(“testData”);
System.out.println(“testData:” + testData);

<receiver android:enabled=[“true” | “false”]
    android:exported=[“true” | “false”]
    android:icon=”drawable resource”
    android:label=”string resource”
    android:name=”string”
    android:permission=”string”
    android:process=”string” >
… …
</receiver>

<manifest
xmlns:android=”http://schemas.android.com/apk/res/android
    package=”string”
    android:sharedUserId=”string”
    android:sharedUserLabel=”string resource” 
    android:versionCode=”integer”
    android:versionName=”string”
    android:installLocation=[“auto” | “internalOnly” |
“preferExternal”] >
… …
</manifest>

<provider>与<grant-uri-permission>

<uses-permission>

<uses-library>

  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>  

<service>

Boardcast
Receiver广播接收器组件的注脚标签,用于定义与叙述二个实际的Android广播接收器,其重点品质和<service>标签某个近乎:Boardcast
Receiver接收器类名android:name,接收器图标android:icon,接收器描述android:label以及接收器开关android:enabled等。关于Boardcast
Receiver广播接收器组件的定义和用法请参见2.1.4.3节的始末,以下是<receiver>标签的语法范例。

 

用来存储预约义数据,和<intent-filter>类似,<meta-data>也足以放在<activity>、<activity-alias>、<service>和<receiver>那两个元素标签中。Meta数据一般会以键值对的花样出现,个数没有限定,而这个多少都将被内置3个Bundle对象中,程序中大家则足以采用ActivityInfo、瑟维斯Info甚至ApplicationInfo对象的metaData属性中读取。尽管大家在多少个Activity中定义了一个<meta-data>成分,相关示例用法如下。

<uses-feature android:name=”string”
    android:required=[“true” | “false”]
    android:glEsVersion=”integer” />

Activity组件别名的评释标签,一言以蔽之就是Activity的迅速方式,属性android:targetActivity代表的就是其相关的Activity名,当然不可以不是目前早已宣示过的Activity。除此之外,其余比较普遍的性质有:Activity别名名称android:name,别名开关android:enabled,权限控制android:permission等。其余,大家还亟需注意的是,Activity别名也是多个单身的Activity,可以有所和谐的<intent-filter>和<meta-data>成分,其语法范例如下。

分类: Android平台

用于表明Instrumentation测试类来监控Android应用的一言一动并动用到相关的功力测试中,其中相比重大的天性有:测试功用开关android:functionalTest,profiling调试功用开关android:handleProfiling,测试用例目标对象android:targetPackage等。别的,大家必要小心的是Instrumentation对象是在应用程序的零部件从前被实例化的,那一点在社团测试逻辑的时候要求被考虑到。<instrumentation>标签语法范例如下。

<activity>

<activity-alias>

Activity活动组件(即界面控制器组件)的扬言标签,Android应用中的每四个Activity都不可以不在AndroidManifest.xml配置文件中声称,否则系统将不识别也不执行该Activity。<activity>标签中常用的特性有:Activity对应类名android:name,对应主旨android:theme,加载方式android:launchMode(详见2.1.3.4节),键盘交互形式android:windowSoftInputMode等,其余的习性用法大家可以参考Android
SDK文档学习。其它,<activity>标签还是可以涵盖用于音信过滤的<intent-filter>成分,当然还有可用于储存预约义数据的<meta-data>成分,以下是<activity>标签的语法范例。

 

<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 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”/>

 

[html] view
plain
copy

 AndroidManifest.xml配置文件详解 2013-01-05
10:25:23

<receiver>

<activity android:allowTaskReparenting=[“true” | “false”]
    android:alwaysRetainTaskState=[“true” | “false”]
    android:clearTaskOnLaunch=[“true” | “false”]
    android:configChanges=[“mcc”, “mnc”, “locale”,
        “touchscreen”, “keyboard”, “keyboardHidden”,
        “navigation”, “orientation”, “screenLayout”,
        “fontScale”, “uiMode”]
    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:multiprocess=[“true” | “false”]
    android:name=”string”
    android:noHistory=[“true” | “false”]  
    android:permission=”string”
    android:process=”string”
    android:screenOrientation=[“unspecified” | “user” | “behind” |
        “landscape” | “portrait” |
        “sensor” | “nosensor”]
    android:stateNotNeeded=[“true” | “false”]
    android:taskAffinity=”string”
    android:theme=”resource or theme”
    android:windowSoftInputMode=[“stateUnspecified”,
        “stateUnchanged”, “stateHidden”,
        “stateAlwaysHidden”, “stateVisible”,
        “stateAlwaysVisible”, “adjustUnspecified”,
        “adjustResize”, “adjustPan”] >   
… …
</activity>

<instrumentation android:functionalTest=[“true” | “false”]
    android:handleProfiling=[“true” | “false”]
    android:icon=”drawable resource”
    android:label=”string resource”
    android:name=”string”
    android:targetPackage=”string” />

<manifest …>
… …
    <!– 互连网有关职能 –>
    <uses-permission android:name=”android.permission.INTERNET”
/>
    <uses-permission
android:name=”android.permission.ACCESS_NETWORK_STATE” />
    <uses-permission
android:name=”android.permission.ACCESS_COARSE_LOCATION” />
    <uses-permission
android:name=”android.permission.ACCESS_FINE_LOCATION” />
    <!– 读取电话状态 –>
    <uses-permission
android:name=”android.permission.READ_PHONE_STATE”/>
    <!– 公告有关职能 –>
    <uses-permission android:name=”android.permission.VIBRATE”
/>
… …
</manifest>

<uses-configuration>与<uses-feature>

小贴士:
当运营Java程序时,首先运维JVM(Java虚拟机),然后再把Java类加载到JVM里头运维,负责加载Java类的那有个别就叫做ClassLoader。当然,ClassLoader是由三个部分构成的,每一种部分都承受对应的加载工作。当运行一个程序的时候,JVM运维,运转BootstrapClassLoader,该ClassLoader加载java主旨API(ExtClassLoader和AppClassLoader也在那时候被加载),然后调用ExtClassLoader加载扩张API,最终AppClassLoader加载CLASSPATH目录下定义的Class,那就是1个Java程序最大旨的加载流程。

<permission>

<activity-alias android:enabled=[“true” | “false”]
    android:exported=[“true” | “false”]
    android:icon=”drawable resource”
    android:label=”string resource”
    android:name=”string”
    android:permission=”string”
    android:targetActivity=”string” >
… …
</activity-alias>

Service服务组件的讲明标签,用于定义与讲述七个具体的Android服务,主要质量有:Service服务类名android:name,服务图标android:icon,服务描述android:label以及服务开关android:enabled等。关于Service服务组件的定义和用法请参考2.1.4.2节的情节,以下是<service>标签的语法范例。

<instrumentation>

AndroidManifest.xml配置文件的根成分,必须带有2个<application>成分并且指定xlmns:android和package属性。xlmns:android指定了Android的命名空间,暗中承认意况下是“http://schemas.android.com/apk/res/android”;而package是标准的应用包名,也是一个应用进程的默认名称,以本书微博应用实例中的包名为例,即“com.app.demos”就是一个标准的Java应用包名,我们为了避免命名空间的冲突,一般会以应用的域名来作为包名。当然还有一些其他常用的属性需要注意一下,比如android:versionCode是给设备程序识别版本用的,必须是一个整数值代表app更新过多少次;而android:versionName则是给用户查看版本用的,需要具备一定的可读性,比如“1.0.0”这样的。&lt;manifest&gt;标签语法范例如下。

 

<uses-library android:name=”string”
    android:required=[“true” | “false”] />

<intent-filter android:icon=”drawable resource”
    android:label=”string resource”
    android:priority=”integer” >
    <action android:name=”string” />
    <category android:name=”string” />
    <data android:host=”string”
        android:mimeType=”string”
        android:path=”string”
        android:pathPattern=”string”
        android:pathPrefix=”string”
        android:port=”string”
        android:scheme=”string” />
</intent-filter>

<manifest>

<provider android:authorities=”list”
    android:enabled=[“true” | “false”]
    android:exported=[“true” | “false”]
    android:grantUriPermissions=[“true” | “false”]
    android:icon=”drawable resource”
    android:initOrder=”integer”
    android:label=”string resource”
    android:multiprocess=[“true” | “false”]
    android:name=”string”
    android:permission=”string”
    android:process=”string”
    android:readPermission=”string”
    android:syncable=[“true” | “false”]
    android:writePermission=”string” >
… …
</provider>

<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”] />

<service android:enabled=[“true” | “false”]
    android:exported=[“true” | “false”]
    android:icon=”drawable resource”
    android:label=”string resource”
    android:name=”string”
    android:permission=”string”
    android:process=”string” >
… …
</service>

为了保险Android应用的安全性,应用框架制定了相比严酷的权力系统,1个拔取必须表明了天经地义的权柄才足以动用相应的法力,例如大家需求让动用可以访问互连网就必要配备“android.permission.INTE福特ExplorerNET”,而一旦要采纳设备的相机功能,则必要安装“android.permission.CAMERA”等。<uses-permission>就是我们最平时采用的权柄设定标签,大家通过设定android:name属性来声称相应的权位名,比如在今日头条应用实例中,大家就是根据使用的所需功用声称了对应的权杖,相关代码如下。

权力注解标签,定义了须求<uses-permission>使用的实际权限,平时处境下大家不要求为投机的应用程序注明某些权限,除非须要给其余应用程序提供可调用的代码只怕数额,这些时候你才须求利用<permission>标签。该标签中提供了android:name权限名标签,权限图标android:icon以及权限描述android:description等性格,此外仍能够和<permission-group>以及<permission-tree>同盟使用来布局更有层次的、更有针对权限系统。<permission>标签语法范例如下。

<activity…>
    <meta-data android:name=”testData” android:value=”Test Meta
Data”></meta-data>
</activity>

利用配置的根成分,位于<manifest>下层,包蕴所有与应用有关布署的要素,其性质能够看作子成分的暗中同意属性,常用的属性包蕴:应用名android:label,应用图标android:icon,应用核心android:theme等。当然,<application>标签还提供了其他增加的布置属性,由于篇幅原因就不列举了,大家可以打开Android
SDK文档来更是读书,以下是语法范例。

从上述示例代码中,我们得以看出Android配置文件选拔XML作为描述语言,逐个XML标签都不比的意思,一大半的安排参数都放在标签的质量中,上边我们便按照上述配置文件样例中的先后顺序来上学Android配置文件中重视成分与标签的用法。

<uses-sdk>

相关文章