清单文件AndroidManifest.xml结构

<manifest>
    <application>
        <activity/>
        <activity-alias/>   
        <service/>
        <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"

    <!--//默认情况下,每个APK分配一个唯一的UserID,拥有同一个User id的多个APK可以配置成运行在同一个进程中-->

    android:sharedUserId="wirelessqa.com"

    <!--//给共享的UserId定义了一个用户可读的标签,它只有在设置了sharedUserId属性的前提下才会有意义 用户id的可读名,且必 须为资源的引用。-->

    android:sharedUserLabel="string resource"

    <!--android:installLocation的值有三个 internalOnly ,auto,preferExternal,缺省值为internalOnly
    internalOnly表示该应用程序只能安装到手机内部存储中。
    auto表示由系统决定该应用程序安装到手机内部存储中还是SD卡中。 如果有SD卡且应用程序大于5M的话,安装到SD卡      中,否则安排到手机内部存储中
    preferExternal表示如果有SD卡就把该应用程序只能安装到SD卡中,否则安装到手机内部存储中。-->

    android:installLocation= "internalOnly"

    <uses-sdk
        <!--//指定了应用程序运行所需的操作系统的最低版本。-->
        android:minSdkVersion="17"
        <!--targetSdkVersion 是 Android 系统提供前向兼容的主要手段-->
        android:targetSdkVersion="17"
    />
</manifest>

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>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容