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文件详解的主要内容,如果未能解决你的问题,请参考以下文章

AndroidManifest.xml文件详解

PMS解析AndroidManifest.xml详解

AndroidManifest.xml

AndroidMainfest详解

AndroidManifest.xml文件安全探索

AndroidManifest.xml文件安全探索