您的位置:首页 > 移动开发 > Android开发

Android的清单文件AndroidManifest

2017-05-05 23:05 309 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。

清单文件AndroidManifest结构概要:

<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
<activity>
<intent-filter>
<action/>
<category/>
</intent-filter>
</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/>
</provider>
<uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/>
<uses-feature/>
<supports-screens/>
</manifest>


分层节点细节说明

1第一层(Manifest)属性

<manifest
//定义android命名空间,使得各种 标准属性 能在文件中使用,提供了大部分元素中的数据
xmlns:android="http://schemas.android.com/apk/res/android" 。
//指定本应用内java主程序包的包名,它也是一个应用进程的默认名称
package="com.nnnn.mvp"
//代表应用程序代码的相对版本,对用户是可见的,它必须是一个int型的整数
android:versionCode="1"
//代表应用程序的版本信息,字符串值,需要显示给用户
android:versionName="1.0"
//表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互
相共享数据了(详细参考(http://blog.csdn.net/wirelessqa/article/details/8581652/ "详细参考这里")
android:sharedUserId="wirelessqa.com"
//一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义用户id的可读名,且必须为资源的引用。
android:sharedUserLabel="string resource"
//决定程序的安装位置.internalOnly:默认值,程序只能被安装在内存中,如果内存为空,则不能安装auto:默认内,可外preferExternal:默认外,可内。(详细参考(http://www.cnblogs.com/Lefter/archive/2012/03/07/2383962.html%20%E2%80%9C%E5%8F%82%E8%80%83%E8%BF%99%E9%87%8C%E2%80%9D)
android:installLocation=["auto" | "internalOnly"(默认) | "preferExternal"]>
<uses-sdk //指定了应用程序运行所需的操作系统的最低版本。
android:minSdkVersion="17"
android:targetSdkVersion="17" />


2第二层(Application)属性

<!-- 标签application声明了每一个应用程序的组件及其属性。 -->
<application
<!-- 用户是否能选择自行清除数据。 -->
android:allowClearUserData=["true(默认)" || "false"]
<!--是否允许activity更换从属的任务。 -->
android:allowTaskReparenting=["true(默认)" || "false"]
<!-- 数据的备份和恢复功能 -->
android:allowBackup="true"
<!-- 申请更多的内存 api>=11 -->
android:largeHeap="true"
<!-- 设置该APP的备份,属性值应该是一个完整的类名 -->
android:backupAgent=="@string/xxx"
<!-- 在手机上可否被调试。 -->
android:debuggable=["true" || "false(默认)"]
<!-- 否能够实例化该应用程序的组件。 -->
android:description="@string/xxx"
<!-- 否能够实例化该应用程序的组件。 -->
android:enabled=["true(默认)" || "false"]
android:hasCode=["true(默认)" || "false"]//此APP是否包含任何的代码
<!-- ????? -->
android:killAfterRestore=["true(默认)" || "false"]//在整型系统重置操作中,当他的设置被重置后,应用是否应该被终止。单个包的重置操作不会引起应用被关闭。整个系统的恢复操作仅 代表性的发生一次,当电话第一次被设置时。第三方应用将不会经常使用此属性。意思是,当整个系统被恢复时,应用运行玩他的数据后,将会终止。
android:manageSpaceActivity=".activityname"//指定一个Activity来管理数据
android:name=".myApplication"//设置你所有activity所属于哪个application的,默认是android.app.Application,你也可以自己定义一个Application
//以上三个当应用程序进程开始时,该类在所有应用程序组件之前被实例化。

android:permission="android.permission.XXX"//服务访问权限

android:persistent=["true" || "false(默认)"]//应用是否在所有时间下都保持运行。

android:process =""//为应用下的组件定一个运行进程名称。每个组件可以定义自己的进程名称通过设置自己的process属性。process分私有进程和全局进程,私有进程的名称前面有冒号,全局进程没有

android:restoreAnyVersion=["true" || "false(默认)"]是否准备尝试恢复所有的备份,                                甚至该备份是比当前设备上更要新的版本
android:taskAffinity ="string"//拥有相同的affinity的Activity理论上属于相同的Task,应用程序默认的affinity的名字是元素中设定的package名
<!-- 程序的图标 -->
android:icon="@drawable/ic_launcher"
<!-- 程序名字。 -->
android:label="@string/app_name"
<!-- activity的样式主题。 -->
android:theme="@style/AppTheme" >


3第三层(Activity)属性

<activity
android:name="view.MainActivity"
android:label="@string/app_name"
<!-- Activity在当前应用退居后台后,是否能从启动它的task移动到有共同affinity的task -->
android:alwaysRetainTaskState =["true" || "false(默认)"]
<!-- 是否从task清除除根Activity之外的所有的Activity。 -->
android:clearTaskOnLaunch =["true" || "false(默认)"]
<!-- 使Activity捕捉设备状态变化 -->
android:configChanges ="orientation|screenSize|keyboardHidden"//此时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
<!-- 是否可被显示在recent列表(近期任务列表)(长按Home键出来的那个Dialo) -->
android:excludeFromRecents =["true" || "false(默认)"]
<!-- 当返回到这个Task时,是否该activity会被销毁,其他的不会被销毁。 -->
android:finishOnTaskLaunch =["true" || "false(默认)"]
<!-- (Activity加载模式)。 -->
android:launchMode =["standard(默认)"|"singleTop"|"singleTask"|"singleTask"]
//standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity。
singleTop:也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于             栈顶时(配置成singleTop的Activity),不会构造新的实例
singleTask:和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置            为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果            有直接将intent发送给它。
<!- 是否允许多进程 -->
android:multiprocess =["true" || "false(默认)"]
<!-- Activity在屏幕上不再可见时,Activity是否从Activity stack中清除并结束。 -->
android:noHistory =["true" || "false(默认)"]
<!-- activity显示的模式。 -->
android:screenOrientation =["portrait" || "unspecified(默认)"]
//默认为unspecified:由系统自动判断显示方向
landscape横屏模式,宽度比高度大
portrait竖屏模式, 高度比宽度大
user模式,用户当前首选的方向
behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换
nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了
<!--activity被销毁或者成功重启时是否保存状态 -->
android:stateNotNeeded =["true" || "false(默认)"]
<!-- activity主窗口与软键盘的交互模式 -->
android:windowSoftInputMode ="stateUnspecified">
【A】当有焦点产生时,软键盘是隐藏还是显示
【B】是否减少活动主窗口大小以便腾出空间放软键盘
各值的含义:
【A】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题          的设置
【B】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状          态,无论是隐藏还是显示
【C】stateHidden:用户选择activity时,软键盘总是被隐藏
【D】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【E】stateVisible:软键盘通常是可见的
【F】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【G】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【H】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【I】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输          入内容的部分


4第四层(Intent)属性

<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 清单文件