ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 12969|回复: 0
上一主题 下一主题
[教程]

专家专栏:AndroidManifest.xml文件详解

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-28 16:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0本文为安全专家李洋的最新一篇专栏文章《AndroidManifest.xml文件详解》。AndroidManifest.xml是一个跟安全相关的配置文件,该配置文件是Android安全保障的一个不可忽视的方面,本文对AndroidManifest文件进行详细介绍。以下为全部内容:   
AndroidManifest.xml主要包含以下功能:   
说明application的java 数据包,数据包名是application的唯一标识;描述application的component;说明application的component运行在哪个process下;声明application所必须具备的权限,用以访问受保护的部分API,以及与其他application的交互;声明application其他的必备权限,用以component之间的交互;列举application运行时需要的环境配置信息,这些声明信息只在程序开发和测试时存在,发布前将被删除;声明application所需要的AndroidAPI的最低版本级别,例如1.0,1.1,1.5等;列举application所需要链接的库;   
   
AndroidManifest.xml文件的结构、元素,以及元素的属性,可以在AndroidSDK文档中查看详细说明。而在看这些众多的元素以及元素的属性前,需要先了解一下这些元素在命名、结构等方面的规则:   
元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素<manifest>的属性,所有其他元素属性的名字都是以android:前缀的;定义类名:所有的元素名都对应其在SDK中的类名,如果你自己定义类名,必须包含类的数据包名,如果类与application处于同一数据包中,可以直接简写为“.”;多数值项:如果某个元素有超过一个数值,这个元素必须通过重复的方式来说明其某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;资源项说明:当需要引用某个资源时,其采用如下格式:@[package:]type:name。例如<activity android:icon=”@drawable/icon ” . . .>字符串值:类似于其他语言,如果字符中包含有字符“”,则必须使用转义字符“\”;   
   
下面结合cookie实例中的AndroidManifest.xml文件来说明一下,原XML文件如下:   
  1. <?xml version=”1.0″ encoding=”utf-8″?> <manifest xmlns:android=”http://schemas.android.com/apk/res/android” package=”moandroid.cookie” android:versionCode=”1″ android:versionName=”1.0″> <application android:icon=”@drawable/icon” android:label=”@string/app_name”> <activity android:name=”.cookie” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion=”3″ /> </manifest>
复制代码
除了头部的XML信息说明外,首先是manifest项(也就是根节点),其属性包括:schemas URL地址、包名(moandroid.cookie),以及程序的版本说明。其次是manifest的子节点application,其属性包括:程序图标、程序名称。前面带有@表示引用资源,例如:@drawable/icon表示引用的是drawable资源中的icon,可以在其源工程的res/drawable中找到。然后就是application的子节点activity,其属性包括:activity的名称、activity的标签名,其子节点intent-filter则是对activity的说明。   
而在intent-filter中,actionandroid:name=”android.intent.action.MAIN”和categoryandroid:name=”android.intent.category.LAUNCHER”用以说明程序启动时的入口activity是哪个。如果这两个属性值中分别含有MAIN和LAUNCHER,则说明它就是启动程序时的入口活动。uses-sdkandroid:minSdkVersion=”3″说明程序使用的Android SDK的最低版本,其中1表示Android1.0,2表示Android 1.1,而3则表示Android1.5。   
如下所示,文中黑体标记的部分为应用程序权限申请内容:   
  1. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.com.fetion.android" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".welcomActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> </manifest>
复制代码
如上述文件描述中加下划线的斜体部分,该文件的作用是说明该软件需要发送短信的功能。   
Android定义了百余种permission,可供开发人员使用,具体详见网址。   
在文件中,用户还可以自定义权限。permission就是自定义权限的声明,可以用来限制app中特殊组件,特性与app内部或者和其他app之间访问。写了一个引用自定义权限的例子,在安装app的时候,提示权限:   
定义权限如下:   
  1. <permission android:label="”自定义权限”" android:description=”@string/test” android:name=”com.example.project.TEST” android:protectionLevel=”normal” android:icon=”@drawable/ic_launcher”>
复制代码
声明的含义如下;   
android:label:权限名字,显示给用户的,值可是一个string数据,例如这里的“自定义权限”。android:description:比label更长的对权限的描述。值是通过resource文件中获取的,不能直接写string值,例如这里的”@string/test”。android:name:权限名字,如果其他app引用该权限需要填写这个名字。android:protectionLevel:权限级别,分为4个级别:   
normal:低风险权限,在安装的时候,系统会自动授予权限给application。dangerous:高风险权限,系统不会自动授予权限给app,在用到的时候,会给用户提示。signature:签名权限,在其他app引用声明的权限的时候,需要保证两个app的签名一致。这样系统就会自动授予权限给第三方app,而不提示给用户。signatureOrSystem:这个权限是引用该权限的app需要有和系统同样的签名才能授予的权限,一般不推荐使用。   
   

上一篇:如何在Android emulator上安装 APK
下一篇:《Android Dev Guide》系列教程4:应用基础之Activities 和任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2025-5-22 18:01 , Processed in 0.142627 second(s), 15 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2025 ZNDS.Com

快速回复 返回顶部 返回列表