AndroidManifest.xml文件详解
Posted 泼墨成空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidManifest.xml文件详解相关的知识,希望对你有一定的参考价值。
manifest根节点的属性
package | 指定应用的包名,每个应用的包名是唯一的, |
android:versionCode | 指定应用的版本号,对用户不可见,对开发人员可用,可通过比较版本号进行应用版本升级。 |
android:versionName | 指定应用的版本名称,对用户可见,用户可以到设置里查看版本名称。 |
android:sharedUserId | 用于多个应用之间共享userid,多个应用如果将此属性设为同一个值,那么这些应用就可以共享资源了,详情见另一篇文章 http://blog.csdn.net/u012481172/article/details/51095658 |
android:installLocation | 应用的安装位置,有三种选择,auto、internalOnly 和preferExternal。 |
android:sharedUserLabel | 为sharedUserId属性指定标签,只能是用@string引用,不能直接用字符串。 |
Application节点属性
android:name | 自定义Application时,需要在此指定 | |
android:theme | 应用的主题样式 | |
android:label | 应用描述,此描述会在设置、应用管理里给用户看的,不是桌面的app名字,也不是应用中默认的ActionBar的title,桌面上应用的名称是主Activity的label描述的 | |
android:icon | 此图标就是设置、应用管理里的应用描述图标,同时也是桌面上的图标,如果不设置就会默认使用系统自带的机器人图标(不是项目自带的机器人,是系统原始的图标) | |
android:logo | 应用的logo,是所有的Activity的Actionbar上的Logo,不是桌面的启动图标,也不是设置中应用程序的描述图标。如果不设置此属性,就会默认使用icon属性的图标,如果icon也没有设置就会使用系统自带的图标 | |
android:permission | 设置权限许可,如果此属性有设置,并且其下的各组件也设置了的就会被覆盖 | |
android:process | 应用程序的进程名,如果不设置就会默认为package名 | |
android:taskAffinity | 设置Activity任务栈的名称 | |
android:allowTaskReparenting | 表示是否允许Activity的task栈迁移,详情见:http://blog.csdn.net/einarzhang/article/details/6971878 | |
android:hasCode | 如果为false表示程序中没有任何的java代码,那么系统就不会尝试去加载相关的类,通常当将项目作出libary库时可以使用此属性 | |
android:persistent | 该应用程序是否应该在任何时候都保持运行状态,默认为false。 | |
android:requiredForAllUsers | 指定此应用是否需要对所有用户可用 | |
android:hardwareAccelerated | 是否启用应用加速,在此节点上加入此属性的话会对整个应用都使用硬件加速,Activity、View也有此属性设置,查看:http://blog.csdn.net/janronehoo/article/details/7517284 | |
android:vmSafeMode | 此属性用于控制是否使用JIT编译器,如果你觉得JIT会导致你的程序发生异常你可以关闭他。系统默认是false,也就是默认的就是使用JIT编译器来提高性能的 | |
android:debuggable | 只有此属性为true时才允许在手机上进行调试 | |
android:manageSpaceActivity | 此属性相当有用啊,可以控制不让用户删除应用数据,我们可以通过此属性指定到程序员自己编写的类去清除指定的数据。指定的Activity也需要注册见:http://blog.csdn.net/mingli198611/article/details/22671919 | |
android:allowClearUserData | 是否允许用户到应用管理里手动清除数据,我测试过貌似没啥效果 | |
android:backupAgent | 这个属性用于定义应用程序备份代理的实现类的名称,这个类是BackupAgent类的一个子类。它的属性值应该是完整的Java类的名称(如,com.example.project.MyBackupAgent) | |
android:allowBackup | 是否允许备份数据,此属性存在安全风险,如果设为true,当任意一个usb连接时就可以通过adb获取备份数据,见:http://www.freebuf.com/articles/terminal/60778.html | |
android:supportsRtl | 此属性是支持布局从左到右的布局,主要是方便开发者去支持阿拉伯语/波斯语等阅读习惯是从右往左的 |
android:uiOptions | 如果ActionBar的控件不够就将Actionbar分离开来,将ActionBar放在底部,而不是手机顶部了 |
android:largeHeap | 申请最大内存使用量,但是不是无限的大,他会收到Dalvik的设置限制,至少这个属性设为true后比不设置的内存限制要大。 |
android:neverEncrypt | 如果设备的文件系统加密是可以用的,那么此属性可以指定是否为用户数据进行加密 |
Activity节点属性
android:name | Activity名称 |
android:label | Activity的ActionBar的title |
android:theme | Activity的主题 |
android:launchMode | Activity启动模式:standard、singTop、singTask、singInstance,这四种模式, |
android:screenOrientation | 屏幕方向:landscape横向、portrait、sensor随着重力感应而改变方向(此时即使在设置中关闭自动旋转此属性依旧有效)、unsensor不随着重力感应而改变方向,用户当前首选方向、竖向,其它不常用就不说了。 |
android:configChanges | 指定一个或多个配置变化事件,指定了配置变化之后Activity就会执行onConfigChanged()方法去处理相应的代码(用户自己去实现),自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"ScreenSize"。 |
android:multiprocess | 指定当组件在不同的进程中执行时是否允许有多个实例 |
android:process | Activity的这个属性我发现没什么卵用啊 |
android:taskAffinity | 关于此属性的用法,这篇文章说的很详细:http://blog.csdn.net/chenshijun0101/article/details/9409193 |
android:allowTaskReparenting | 允许Activity从Task栈中转移 |
android:finishOnTaskLaunch | 是否关闭已打开的activity当用户重新启动这个任务的时候 |
android:finishOnCloseSystemDialogs | 当“关闭系统窗口”请求出现时是否销毁Activity,true为销毁 |
android:clearTaskOnLaunch | 当从home界面启动时是否要将该Activity的task栈清空,意思就是:当我们队A设置此属性为true,然后在A中启动B,在B显示的时候按Home键,再从桌面点击应用图标就会显示的是A了。 |
android:noHistory | 表示此Activity不在Stack中有任何记录,比如对A(假设A是MainActivity)设置此属性为true,然后在A启动B,再按返回就回到桌面了。 |
android:excludeFromRecents | 设为true时,此Activity就不会显示在最近任务列表中。 |
以上是关于AndroidManifest.xml文件详解的主要内容,如果未能解决你的问题,请参考以下文章