随手找了一份文件进行解读
内容如下
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.qiqqzll.zjrlpzz" platformBuildVersionCode="23" platformBuildVersionName="6.0-2166767"> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_SMS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.GET_TASKS"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_SETTINGS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:largeHeap="true" android:name=".Protectedntzncrysry" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <activity android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleTask" android:name="com.qiqqzll.zjrlpzz.otdeuryhvyzrxf" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleInstance" android:name="com.qiqqzll.zjrlpzz.vkzrxgrbmiyqent" android:theme="@style/Theme.Transparent"/> <service android:name="com.qiqqzll.zjrlpzz.lphfrxoho"/> <service android:name="com.qiqqzll.zjrlpzz.esyohligqbo"/> <service android:name="com.qiqqzll.zjrlpzz.zjxmmbwxbgisnyffnk"/> <service android:name="com.qiqqzll.zjrlpzz.qplxyelwkqjujsbtknsa"/> <service android:name="com.qiqqzll.zjrlpzz.pjhjmmdeklzjkrhp"/> <service android:name="com.qiqqzll.zjrlpzz.qvqtcatjcdnvbzawjcmctwwj"/> <service android:name="com.qiqqzll.zjrlpzz.tmeasvygdntw"/> <service android:name="com.qiqqzll.zjrlpzz.mrpeovwqifoykbrzl"/> <service android:exported="true" android:name="com.qiqqzll.zjrlpzz.mhzefrwewpckw" android:process=":UpdaterSystem"/> <receiver android:name="com.qiqqzll.zjrlpzz.pjzaj.cjesxmfvkbpsqktqsnqlzxi"> <intent-filter android:priority="1000"> <action android:name="android.intent.action.BOOT_COMPLETED"/> <action android:name="android.intent.action.QUICKBOOT_POWERON"/> </intent-filter> </receiver> <receiver android:name="com.qiqqzll.zjrlpzz.pjzaj.wthpvbzitzsmhxqxhdgkag"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> <receiver android:label="@string/app_name" android:name="com.qiqqzll.zjrlpzz.pjzaj.jsifdpkmjcxzsjxqnimyy" android:permission="android.permission.BIND_DEVICE_ADMIN"> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/> <action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED"/> <action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED"/> </intent-filter> <meta-data android:name="android.app.device_admin" android:resource="@xml/mbakomtzfthc"/> </receiver> </application> </manifest>第一行 Manifest属性
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 定义android命名空间
installLocation="internalOnly" 安装参数,有三个值可以选择:internalOnly(必须安装到内部才能运行)、auto(系统将会根据存储空间自己去适应)、preferExternal(系统会优先考虑将APK安装到SD卡上)
package="com.qiqqzll.zjrlpzz"指定本应用内java主程序包的包名,它也是一个应用进程的默认名称
sharedUserId="string" 表明数据权限,本例中没有
sharedUserLabel="string resource" 一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义,本例中也没有
platformBuildVersionCode=“23”
platformBuildVersionName="6.0-2166767">
</manifest>
之后的uses-permission为权限申请 详细请看http://blog.csdn.net/dp1234/article/details/6239933
本例中
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>允许程序访问Wi-Fi网络状态信息
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>允许程序访问有关的网络信息
<uses-permission android:name="android.permission.WRITE_SMS"/>允许程序写短信
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>允许读取电话的状态
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>允许应用写(非读)用户的外部存储器
<uses-permission android:name="android.permission.GET_TASKS"/>允许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>允许读外部存储器
<uses-permission android:name="android.permission.INTERNET"/>允许程序打开网络sockets
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>允许程序读取或写入系统设置
<uses-permission android:name="android.permission.RECEIVE_SMS"/>允许程序监控一个将收到短信息,记录或处理
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>允许程序改变网络连接状态
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>允许程序改变Wi-Fi连接状态
<application
android:allowBackup="true" 允许备份
android:icon="@drawable/ic_launcher" 图标
android:label="@string/app_name" android:description/android:label此两个属性都是为许可提供的,均为字符串资源,当用户去看许可列表(android:label)或者某个许可的详细信息(android:description)时,这些字符串资源就可以显示给用户。label应当尽量简短,之需要告知用户该许可是在保护什么功能就行。而description可以用于具体描述获取该许可的程序可以做哪些事情,实际上让用户可以知道如果他们同意程序获取该权限的话,该程序可以做什么。我们通常用两句话来描述许可,第一句描述该许可,第二句警告用户如果批准该权限会可能有什么不好的事情发生
android:largeHeap="true" 可以增加内存的申请量,由dalvik.vm.heapsize限制
android:name=".Protectedntzncrysry" 为应用程序所实现的Application子类的全名。当应用程序进程开始时,该类在所有应用程序组件之前被实例化。
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">一个资源的风格
除此之外,还有一些其他属性
android:allowClearUserData(‘true‘ or ‘false‘)
用户是否能选择自行清除数据,默认为true
android:allowTaskReparenting(‘true‘ or ‘false‘)
是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务
android:debuggable
都知道什么意思,允许APP被调试
android:enabled
Android系统是否能够实例化该应用程序的组件,如果为true,每个组件的enabled属性决定那个组件是否可以被 enabled。如果为false,它覆盖组件指定的值;所有组件都是disabled。
android:hasCode(‘true‘ or ‘false‘)
表示此APP是否包含任何的代码,默认为true,若为false,则系统在运行组件时,不会去尝试加载任何的APP代码
一个应用程序自身不会含有任何的代码,除非内置组件类,比如Activity类,此类使用了AliasActivity类,当然这是个罕见的现象
android:permission
设置许可名,这个属性若在<application>上定义的话,是一个给应用程序的所有组件设置许可的便捷方式,当然它是被各组件设置的许可名所覆盖的
android:presistent
该应用程序是否应该在任何时候都保持运行状态,默认为false。因为应用程序通常不应该设置本标识,持续模式仅仅应该设置给某些系统应用程序才是有意义的。
android:taskAffinity
<activity
android:configChanges="locale|keyboardHidden|orientation|screenLayout|screenSize|touchscreen|uiMode" 当配置发生修改时, 是否调用 onConfigurationChanged() 方法。
android:icon="@drawable/ic_launcher" 同上
android:label="@string/app_name" 同上
android:launchMode="singleTask" 加载模式,常用四种standard、singleTop、singleTask、singleInstance
android:name="com.qiqqzll.zjrlpzz.otdeuryhvyzrxf" 同上
android:screenOrientation="portrait">activity显示的模式,默认为unspecified:由系统自动判断显示方向
此外:
landscape横屏模式,宽度比高度大
portrait竖屏模式, 高度比宽度大
user模式,用户当前首选的方向
behind模式:和该Activity下面的那个Activity的方向一致(在Activity堆栈中的)
sensor模式:有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换
nosensor模式:忽略物理感应器,这样就不会随着用户旋转设备而更改了
此外,其他属性
android:alwaysRetainTaskState 是否保留状态不变, 比如切换回home, 再从新打开,activity处于最后的状态。比如一个浏览器拥有很多状态(当打开了多个TAB的时候),用户并不希望丢失这些状态时,此时可将此属性设置为true
android:clearTaskOnLaunch
比如 P 是 activity, Q 是被P 触发的 activity, 然后返回Home, 重新启动 P,是否显示 Q
android:excludeFromRecents
是否可被显示在最近打开的activity列表里,默认是false
android:finishOnTaskLaunch
当用户重新启动这个任务的时候,是否关闭已打开的activity,默认是false。如果这个属性和allowTaskReparenting都是true,这个属性就是王牌。Activity的亲和力将被忽略。该Activity已经被摧毁并非re-parented
android:multiprocess
是否允许多进程,默认是false
android:noHistory
当用户从Activity上离开并且它在屏幕上不再可见时,Activity是否从Activity stack中清除并结束。默认是false。Activity不会留下历史痕迹
<intent-filter>
<action android:name="android.intent.action.MAIN"/> action属性,只有name,指明程序入口
<category android:name="android.intent.category.LAUNCHER"/> category属性,也只有name属性
</intent-filter>
此外还有个data属性
<data android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
【1】每个<data>元素指定一个URI和数据类型(MIME类型)。它有四个属性scheme、host、port、path对应于URI的每个部分:
scheme://host:port/path
scheme的值一般为"http",host为包名,port为端口号,path为具体地址。如:http://com.test.project:200/folder/etc
其中host和port合起来构成URI的凭据(authority),如果host没有指定,则port也会被忽略
要让authority有意义,scheme也必须要指定。要让path有意义,scheme+authority也必须要指定
【2】mimeType(指定数据类型),若mimeType为‘Image‘,则会从content Provider的指定地址中获取image类型的数据。还有‘video‘啥的,若设置为video/mp4,则表示在指定地址中获取mp4格式的video文件
【3】而pathPattern和PathPrefix主要是为了格式化path所使用的
接下来有很多个server
<service android:enabled=["true" | "false"]
android:exported[="true" | "false"] 表示能否被其他组建启动,每个组件都有的属性
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string">
</service>
receiver也与activity和server大致相同
<receiver android:label="@string/app_name" android:name="com.qiqqzll.zjrlpzz.pjzaj.jsifdpkmjcxzsjxqnimyy" android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
<action android:name="android.app.action.ACTION_DEVICE_ADMIN_DISABLED"/>
<action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED"/>
</intent-filter>
<meta-data android:name="android.app.device_admin" android:resource="@xml/mbakomtzfthc"/>
这个当中有一个meta-data
<meta-data android:name="string" 名字
android:resource="resource specification" 资源的引用
android:value="string"/> 指定这项的值
参考:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html
http://blog.csdn.net/bigconvience/article/details/30063995
http://blog.csdn.net/new_abc/article/details/13730413
原文:http://blog.csdn.net/protoss_penguin/article/details/51892641