Android备忘-AndroidManifest.xml解析
引言
Android的Manifest文件解析,该文件是工程配置的核心,这个博客解析的比较全面,记录了http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html,写下读后感。
读后感
第一层:<manifest />
versionName为发布市场时候的显示
installLocation为安装的位置配置auto由系统自适应;preferExternal为优先SD卡,如果SD满了,就装在手机上;internalOnly必须装在手机上。
---
第二层:<Application />
<application 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" >
</application>
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" >
</application>
主要是icon,label,theme。
name属性是设置公共包名,为了在组件中复用。
---
第三层:<Activity />
<activity android:allowTaskReparenting=["true" | "false"]
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true" | "false"]
android:configChanges=["mcc", "mnc", "locale",
"touchscreen", "keyboard", "keyboardHidden",
"navigation", "orientation", "screenLayout",
"fontScale", "uiMode"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["multiple" | "singleTop" |
"singleTask" | "singleInstance"]
android:multiprocess=["true" | "false"]
android:name="string"
android:noHistory=["true" | "false"]
android:permission="string"
android:process="string"
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified",
"adjustResize", "adjustPan"] >
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true" | "false"]
android:configChanges=["mcc", "mnc", "locale",
"touchscreen", "keyboard", "keyboardHidden",
"navigation", "orientation", "screenLayout",
"fontScale", "uiMode"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["multiple" | "singleTop" |
"singleTask" | "singleInstance"]
android:multiprocess=["true" | "false"]
android:name="string"
android:noHistory=["true" | "false"]
android:permission="string"
android:process="string"
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified",
"adjustResize", "adjustPan"] >
alwaysRetainTaskState:该boolean属性设置程序在后台休眠(30分钟以后)再次唤醒以后,是否保持原来的状态,该属性只对跟Activity起作用。也即栈底。例如跟Activity的表现形式很负责,用户想一直保留起状态,就有这个必要
allowTaskRepareting:当应用程序后台,是否允许改Activity移动到自己Task栈顶。例如LBS应用要访问google地图,如果google地图的地图展示Activity设置改属性为true,则当LBS应用后台时候,在LBS应用栈顶的google地图展示Activity就回到了google地图的Task中,也即再次点击LBS应用,栈顶的地图被移除,同时点击Google地图,进去以后便是改Activity
clearTaskOnLaunch:当应用程序后台以后,再次启动是否清除跟Activity以外的Activity,这个清除Activity不会清除跟Activity以及对应的状态。该属性只对跟Activity起作用。
finishOnTaskLaunch:当应用程序后台,再次启动,这个Activity会被销毁
onConfigurationChanged: 在屏幕旋转的时候,可以避免走oncreate方法,不过该方法有版本限制。
launchMode:singleTask表示整个Activity栈中如果有,就用这个实例。singleInstance表示Taks之间的调用公用一个
---
第四层:<intent-filter>
<intent-filter android:icon="drawable resource"
android:label="string resource"
android:priority="integer" >
android:label="string resource"
android:priority="integer" >
<action />
<category />
<data />
</intent-filter>
actoin:intent行为,如View,Main等
category:如Launcher
data:可以制定scheme,port等
---
第五层:<meta-data>
可以为每个组件定义参数,通过xml配置跟方便。
---
第六层:<activity-alias>
创建快捷方式
---
第七层:<service>
不解释
---
第八层:<receiver>
不解释
---
第九层:<provider>
不解释
---
第十层:<supports-screens>
支持的屏幕分辨率,一般都是android:anyDensity="true"来支持所有的屏幕。
---
第十一层:<uses-configuration> <uses-feature>
可以设置安装应用必须得硬件和软件支持,避免应用在不支持的设备上被安装
---
第十二层:<uses-sdk>
不解释
---
第十三层:<instrumentation>
探测和分析应用新能测试
---
第十四层:<permission>
<permission-tree/>在manifest中仅可以申明,可以通过PackageManagerService.addPermission/removePermission来动态进行权限设置
<permission />是自定义权限,可以在Activity的android:permission中使用申明的权限,当然不能随意申明,需要系统认定
该文章仅仅是其个记录作用,可以忽略。

浙公网安备 33010602011771号