AndroidManifest.xml的作用有哪些

小编给大家分享一下AndroidManifest.xml的作用有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

作用:1、描述app的包名;2、描述app使用的android系统版本信息;3、描述app本身的版本信息,这样对于同一个app的两个版本,系统就能区分那个是新版本,哪个是旧版本;4、描述应用对外暴露的组件等等。

我们在进行APP开发的时候都会遇到一个文件:AndroidManifest.xml。从刚开始进行Android开发,到现在已经过去了几个月,还是对这个文件一知半解,只知道它是配置用的。但是这文件里的东西具体有什么用,该怎么用一直都没有理解。借着做项目的机会,仔细研究一下这个文件。

研究AndroidManifest.xml最好的方式自然就是对照着官方文档详细理解项目中每个字段的作用,并且做出一些修改来验证。

AndroidManifest是什么?AndroidManifest.xml是一个什么文件?

AndroidManifest官方解释是应用清单(manifest意思是货单),每个应用的根目录中都必须包含一个,并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。

AndroidManifest.xml是每个apk(zip)文件解压后根目录下的一个文件,每个apk都必须包含一个AndroidManifest.xml文件,且名字必须与此完全一致.

AndroidManifest.xml的作用是什么?

描述app的包名:

Android设备据此区分不同的app,如果每个app是一个人的话,包名就相当于是这个人的名字(为了防止恶意软件仿冒其他app,只有新的app的包名和签名均与旧的app相同时才能升级覆盖安装成功).

描述app使用的android系统版本信息:

因为android系统在不断的升级,新的系统版本会增加新的API,但是旧的Android设备上并没有这些API,那么就会出现新版本的应用使用新的API但是在旧的系统上运行的问题(在旧的系统上调用新的API应用会崩溃),因此需要说明本应用支持的最低android系统版本是哪个,比如说将minSdkVersion设置为19就是说这个应用在API19以及以上的设备上运行没有问题.

描述app本身的版本信息,这样对于同一个app的两个版本,系统就能区分那个是新版本,哪个是旧版本.

很重要的一个作用是描述应用对外暴露的组件(或者叫接口):

Activity,Service,Provider,BroadcastReceiver这四大组件的每一个都可以独立运行,都可以作为app启动的入口点。

AndroidManifest.xml可以告知系统点击应用图标后进入哪个Activity;可以告知系统本应用某个类(BroadcastReceiver的子类)需要监听网络变化等信息(广播);告知系统本应用可以其他应用提供服务(ContentProvider和Service);告知系统本应用某些类能够处理一些特定的请求(比如打开pdf扩展名的文件);等等

其他各种需要用文本直接告知系统的:比如申请的权限,应用的主题等等。

归根结底就是Android系统的app需要通过文本方式直接告诉系统的信息太多了

一份真实的AndroidManifest.xml文件

<manifest xmlns:android=""           package="com.sample.teapot"           android:versionCode="1"           android:versionName="1.0.0.1" >   <uses-feature android:glEsVersion="0x00020000"></uses-feature>   <application       android:allowBackup="false"       android:fullBackupContent="false"       android:supportsRtl="true"       android:icon="@mipmap/ic_launcher"       android:label="@string/app_name"       android:theme="@style/AppTheme"       android:name="com.sample.teapot.TeapotApplication"       >     <!-- Our activity is the built-in NativeActivity framework class.          This will take care of integrating with our NDK code. -->     <activity android:name="com.sample.teapot.TeapotNativeActivity"               android:label="@string/app_name"               android:configChanges="orientation|keyboardHidden">       <!-- Tell NativeActivity the name of our .so -->       <meta-data android:name="android.app.lib_name"                  android:value="TeapotNativeActivity" />       <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>   </application> </manifest>

这是Google官方示例中的teapots项目中的一个文件,我们就针对这份文件来分析字段的意义。字段的意义参考的是官方文档。

<manifest>元素

首先,所有的xml都必须包含<manifest>元素。这是文件的根节点。它必须要包含<application>元素,并且指明xmlns:android和package属性。

<manifest>元素中的属性

xmlns:android

这个属性定义了Android命名空间。必须设置成""。不要手动修改。

package

这是一个完整的Java语言风格包名。包名由英文字母(大小写均可)、数字和下划线组成。每个独立的名字必须以字母开头。

构建APK的时候,构建系统使用这个属性来做两件事:

1、生成R.java类时用这个名字作为命名空间(用于访问APP的资源)
比如:package被设置成com.sample.teapot,那么生成的R类就是:com.sample.teapot.R

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。