文档章节

安卓入门笔记之AndroidManifest.xml文件详解

twobeings
 twobeings
发布于 2014/04/15 21:19
字数 1030
阅读 437
收藏 0

本文为安全专家李洋的最新一篇专栏文章,来自51CTO.COM的专栏

AndroidManifest.xml文件是Android系统重要的权限申请和定义配置文件,程序员在开发时需要通过其来向系统预先定义和申请应用程序运行所需要的权限。灵活、安全地使用该配置文件是Android安全保障的一个不可忽视的方面。

了解AndroidManifest.xml文件的主要用途

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文件的结构及元素

AndroidManifest.xml文件的结构、元素,以及元素的属性,可以在AndroidSDK文档中查看详细说明。而在看这些众多的元素以及元素的属性前,需要先了解一下这些元素在命名、结构等方面的规则:

元素:在所有的元素中只有<manifest>和<application>是必需的,且只能出现一次。如果一个元素包含有其他子元素,必须通过子元素的属性来设置其值。处于同一层次的元素,这些元素的说明是没有顺序的。
属性:按照常理,所有的属性都是可选的,但是有些属性是必须设置的。那些真正可选的属性,即使不存在,其也有默认的数值项说明。除了根元素<manifest>的属性,所有其他元素属性的名字都是以android:前缀的;
定义类名:所有的元素名都对应其在SDK中的类名,如果你自己定义类名,必须包含类的数据包名,如果类与application处于同一数据包中,可以直接简写为“.”;
多数值项:如果某个元素有超过一个数值,这个元素必须通过重复的方式来说明其某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;
资源项说明:当需要引用某个资源时,其采用如下格式:@[package:]type:name。例如<activity android:icon=”@drawable/icon ” . . .>
字符串值:类似于其他语言,如果字符中包含有字符“\”,则必须使用转义字符“\\”;

下面结合cookie实例中的AndroidManifest.xml文件来说明一下,原XML文件如下:


<?xmlversion=”1.0″ encoding=”utf-8″?>
<manifestxmlns:android=”http://schemas.android.com/apk/res/android”
package=”moandroid.cookie”
android:versionCode=”1″
android:versionName=”1.0″>
<applicationandroid:icon=”@drawable/icon” android:label=”@string/app_name”>
<activityandroid:name=”.cookie” android:label=”@string/app_name”>
<intent-filter>
<actionandroid:name=”android.intent.action.MAIN” />
<categoryandroid:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
<uses-sdkandroid: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。

本文转载自:

twobeings
粉丝 4
博文 29
码字总数 2506
作品 0
浦东
私信 提问
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
2018/08/08
0
0
安卓入门笔记之Activity

——本文来自博客园Tekkaman的博客Android之Activity ,IBM的developerWorks网站张勇的详解Android的Activity组件一文 ,CSDN博客hpoi的博客Android Activity的生命周期 ,感谢zzxap在CSDN论...

twobeings
2014/04/03
0
0
【Android入门】-【AndroidManifest.xml】-【中英对照】

The AndroidManifest.xml File 【安卓应用清单】 【该文高度总结,初学需要多次返回阅读体味】 【来源:http://developer.android.com/guide/topics/manifest/manifest-intro.html】 Every ...

zhmsong
2012/02/07
0
1
卖几本不用的技术书籍,价格便宜,但是不包邮

涂抹Oracle——三思笔记之一步一步学Oracle 15元 思科网络技术学院教程CCNA Exploration:网络基础知识 10元 C语言从入门到精通10元 Head First Servlets and JSP(第2版)(中文版) 25元 Androi...

-Jw-
2016/07/17
1K
14
AndroidManifest.xml文件详解

更多原文,请见:http://mobile.51cto.com/aprogram-340646.htm AndroidManifest.xml文件是Android系统重要的权限申请和定义配置文件,程序员在开发时需要通过其来向系统预先定义和申请应用程...

samsunglinux
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

重定向又是什么“垃圾”——教你再分类

  前言:之前写了几篇JSP的博客,现在又回过头来看Servlet,温故而知新,再回顾回顾,总会有收获的。以前学习Servlet感觉内容很多,现在看的时候,其实也没多少东西,只需知道Servlet的生命...

SEOwhywhy
28分钟前
0
0
一图胜千言!这10种可视化技术你必须知道

全文共4549字,预计学习时长9分钟 图片来源:Willian Justen deVasconcellos on Unsplash 相比于浩如烟海的数据表格,大部分人还是更喜欢视觉资料,这一点已不足为奇。也是出于这个原因,人们...

读芯术
32分钟前
2
0
Spring Boot 自动配置(auto-configurtion) 揭秘

本章,我们为你揭秘Spring Boot自动配置(Auto Configuration)运行机制,谈到auto-configuration,肯定离不开@EnableAutoConfiguration注解。 package org.springframework.boot.autoconfi...

爱编程的浪子
38分钟前
0
0
RabbitMQ延迟消息的延迟极限是多少?

之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用RabbitMQ的延迟消息来实现定时任务。最近正好因为开发碰到了使用过程中发现,延迟消息没有效果,消息直接就被消费了的情...

程序猿DD
39分钟前
2
0
MySQL知识库语雀

类型:所有 MySQL知识库 MySQL知识库 06-05 20:57 近期阅读文章 近期已读或者未读文章列表 03-08 10:49 日常脚本 这里是平时工作会用到的一些常用的脚本,作为统一管理 03-08 05:09 培训 03...

rootliu
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部