Android学习【7】manifest文件讲解

来源:互联网 发布:三端口网络的s参数 编辑:程序博客网 时间:2024/05/29 03:18

Android应用程序有松耦合的组件组成,使用Manifest文件绑定在一起,Manifest文件描述了每一个组件和他们之间的交互方式,还用于指定应用程序元数据、硬件和平台的要求、外部库以及必须的权限。

Manifest文件由一个根manifest标签构成,该标签带有一个被设为项目包的package属性。它通常包含一个xmlns:android属性来提供文件内使用的某些系统属性。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.simonnear.mydemo"    android:versionCode="1"    android:versionName="1.0 Beta<span style="font-family:Arial, Helvetica, sans-serif;">"  </span>    android:installLocation="auto">

versionCode用于定义当前程序的版本号,versionName用于定义公共版本号(给用户看的)insrallLocation属性用于指定应用程序安装的首选位置。(虽然大部分应用程序时推荐安装于外部存储器的,但是有些应用程序不适合安装到外部存储器)

    <uses-sdk android:minSdkVersion="10"        android:targetSdkVersion="19"/>

        uses-sdk属性:用于指定开发和使用应用程序时的平台

    <uses-configuration android:reqTouchScreen="finger"        android:reqNavigation="trackball"        android:reqHardKeyboard="false"        android:reqKeyboardType="qwerty"/>

uses-configuration属性:用于指定应用程序支持的每个输入机制的组合。  (reqTouchScreen:指定触摸屏输入;reqNavigation :选择必须的导航设备;reqHardKeyboard:是否需要硬件键盘;reqKeyboardType:键盘指定类型)详细描述打算另开一篇进行讲述。

<uses-feature android:name="android.hardware.nfc"/>
uses-feature属性:用于指定应用程序需要的每个硬件功能,避免将应用程序安装到不包含必要硬件功能的设备上。

<supports-screens        android:smallScreens="false"        android:normalScreens="true"        android:largeScreens="true"        android:xlargeScreens="true"        android:requiresSmallestWidthDp="480"        android:compatibleWidthLimitDp="600"        android:largestWidthLimitDp="720"/>
support-screens属性:用于指定应用程序针对哪些屏幕尺寸进行了设计和测试,通过此属性可以设置应用程序兼容模式(但是用户体验极差,应该针对不同的屏幕分辨率和密度使用资源文件优化应用程序)

<uses-permission android:name="android.permission.INTERNET"/>
uses-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"] />
permission属性:应用程序创建权限来限制共享应用程序组件的访问。

android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果 
android:label: 对权限的一个简短描述 
android:name :权限的唯一标识,一般都是使用 报名加权限名 
android:permissionGroup: 权限所属权限组的名称 
android:protectionLevel: 权限的等级, 
normal 是最低的等级,声明次权限的app,系统会默认授予次权限,不会提示用户 
dangerous  权限对应的操作有安全风险,系统在安装声明此类权限的app时会提示用户 
signature  权限表明的操作只针对使用同一个证书签名的app开放 
signatureOrSystem  与signature类似,只是增加了rom中自带的app的声明 
android:name 属性是必须的,其他的可选,未写的系统会指定默认值 

    <instrumentation        android:label="My Test"        android:name=".MyTestClass"        android:targetPackage="com.android.simonnear.mydemo">    </instrumentation>
instrumentation属性:instrymentation类提供了一个测试框架,用来在应用程序运行时测试应用程序组件。他们提供了一些挂钩来监控应用程序及其与系统资源的交互。对于自己的应用程序所创建的每一个测试类,都需要创建一个新的节点。具体的。。。我也不太清楚= =!

    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >    </application>
application属性:一个Manifest文件中能包含一个application属性节点。他使用各种属性来指定应用程序的各种元数据(标题,图标和主题)。同时,application节点还可以作为一个包含了Activity,Service,ContentProvider和BroadcastReceiver节点的容器,它包含的这些节点指定了应用程序组件。使用android:name属性可以指定自定义Application类的名称。

<span style="white-space:pre"></span><activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>
activity属性:应用程序内的每一个Activity都要求有一个Activity标签,并使用android:name属性来指定Activity类的名称。必须包含所有Activity。每一个Activity节点都允许使用intent-filter子标签来过滤intent。
        <service android:name=".MyService">        </service>
seivice属性:和activity标签一样,需要为应用程序中的每一个Service类添加一个service标签,service标签也可使用intrnt-filter。
        <provider            android:authorities="com.android.simonnear.mydemo.MyContentProvider"            android:name=".MyContentProvider"/>
provider属性:用来指定应用程序中的每一个ContentProvider。ContentProvider用于管理数据库访问和共享。
<span style="white-space:pre"></span><receiver android:name=".MyIntentReceiver"/>
receiver属性:用于注册Broadcast Receiver。Broadcast Receiver为事件监听器,注册后用于监听系统的消息。
    <span style="white-space:pre"></span>< uses-library        <span style="white-space:pre"></span>android:name="string"        <span style="white-space:pre"></span>android:required=["true" | "false"] / >
用于指定该应用程序需要的共享库。当指定为必须时,缺少该库的设备将无法安装应用程序;指定为可选时,应用程序在调用该库之前必须先通过反射机制来检查库文件是否存在。




0 0