
Android学习笔记之AndroidManifest.xml文件解析.docx
13页Android学习笔记之AndroidManifest.xml文件解析一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)二、AndroidManifest.xml结构
详见: android:allowClearUserData=["true" | "false"] android:allowTaskReparenting=["true" | "false"] android:backupAgent="string" android:debuggable=["true" | "false"] android:description="string resource" android:enabled=["true" | "false"] android:hasCode=["true" | "false"] android:icon="drawable resource" android:killAfterRestore=["true" | "false"] android:label="string resource" android:manageSpaceActivity="string" android:name="string" android:permission="string" android:persistent=["true" | "false"] android:process="string" android:restoreAnyVersion=["true" | "false"] android:taskAffinity="string" android:theme="resource or theme" >A、android:allowClearUserData('true' or 'false')用户是否能选择自行清除数据,默认为true,程序管理器包含一个选择允许用户清除数据。
当为true时,用户可自己清理用户数据,反之亦然B、android:allowTaskReparenting('true' or 'false')是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务C、android:backupAgent这也是Android2.2中的一个新特性,设置该APP的备份,属性值应该是一个完整的类名,如com.project.TestCase,此属性并没有默认值,并且类名必须得指定(就是个备份工具,将数据备份到云端的操作)D、android:debuggable这个从字面上就可以看出是什么作用的,当设置为true时,表明该APP在上可以被调试默认为false,在false的情况下调试该APP,就会报以下错误:Device XXX requires that applications explicitely declare themselves as debuggable in their manifest. Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.E、android:description/android:label此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。
label应当尽量简短,之需要告知用户该许可是在保护什么功能就行而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生F、android:enabledAndroid系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled如果为false,它覆盖组件指定的值;所有组件都是disabledG、android:hasCode('true' or 'false')表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象(在Android2.3可以用标准C来开发应用程序,可在and。
