Android开发学习------AndroidManifest.xml

最近在学习Android开发,先从读懂文件开始,这一篇是在学习过程中结合多方资料对AndroidManifest.xml的简单解读。

--------------------------------------------------华丽的分割线-----------------------------------------------

AndroidManifest是什么?

官方解释:应用清单(毕竟manifest的意思是货单),每个应用的根目录都必须包含一个,且无论是什么项目,该文件名均一模一样为AndroidManifest.xml,其中包含了app的配置信息。

AndroidManifest的一些作用:

  • 提供软件包名,也就是apk名字,具体有待研究。
  • 描述应用的各个组件,定义组件的表现形式以及可以响应的操作等。
  • 声明最低API版本,在build.gradle文件中也能定义(通过minSdkVersion)。
  • 列出必要的lib库等。

代码解读:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.firstapp">

    <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/Theme.FirstApp">
        <activity
                android:name=".MainActivity"
                android:label="@string/app_name"
                android:theme="@style/Theme.FirstApp.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

<?xml version="1.0" encoding="utf-8"?>

定义使用xml的版本(1.0)与编码的方式(utf-8),编码格式不对是导致乱码的主要原因之一。

这段代码是xml文件的标配之一,各种xml文件以及fxml文件都有此类开头,且一般会要求这段代码作为文件的开头,在此之前不能其他代码或注释。

<manifest>元素

此元素便是xml文件的另一标配,它必须包含<application>元素并通过xmlns:android属性定义Android命名空间,具体值也只能为

"http://schemas.android.com/apk/res/android"

同时通过package属性指定应用程序的包名。

<application>元素

此元素描述了应用的配置,它包含了很多用来描述应用的组件的子元素。如:

  • android:allowBackup

表示是否允许app加入到备份还原的结构中。默认为true,若为false,则应用不会备份还原

  • android:icon

用来设置app的图标以及每个组件的默认图标。这个属性必须设置成一个引用,指向一个可绘制的资源(包含图片)

 

 比如示例代码中的

@mipmap/ic_launcher

指的就是在res包中mipmap相关文件夹下的ic_launcher文件。

***更多关于图标适配的介绍可参考文章:戳我戳我快戳我!

  • android:label

一个用户可读的标签,以及所有组件的默认标签。子组件如果没有定义自己的label标签,就会默认用此标签。

该标签必须呗设置成一个字符串资源的引用来被定位,比如

 中的@string/app_name,或为了开发方便定义一个原始字符串"FirstApp"。

  • android:roundIcon

这是一个只适用在Android7.1系统上的过渡版本,很快就被8.0系统的应用图标适配所替代了,与前面的android:Icon相似。

  • android:supportsRtl

用于声明该app是否支持RTL(Right To Left)布局,如果设置成true前targetSdkVersion被设置成17或者更高,该app就可以显示RTL布局。而如果设置成false或者targetSdkVersion被设置成16或者更低,RTL API就不起作用了。

  • android:theme

该属性定义了app使用的主题,它指向style资源的引用。同时,各activity也可以用自己的theme属性设置自己的主题。

<activity>元素

此元素声明一个实现应用可视化界面的Activity类子类,这是<application>元素必要的子元素。

  • android:name

Activity类的名称,也是Activity类的子类。如果第一个字符是点("."),就需要加上manifest元素中的包名。如示例代码中的

android:name=".MainActivity"

实际上".MainActivity"指的是"com.example.firstapp.MainActivity"。

注意:应用一旦发布,不应更改该名称。没有默认值时,必须指定该名称。

  • android:label

该标签会在Activity激活时显示在屏幕上。如果未设置,则会默认使用<application>中的label属性

  • android:theme

该标签用于设定主题格式,与<application>中的theme类似。

<intent-filter>元素

用于指明这个activity可以以什么样的意图(intent)启动

  • <action>元素

表示activity作为一个什么动作启动

android:name="android.intent.action.MAIN"

表示作为主活动启动。

  • <category>元素

这是action元素的额外类别信息

android:name="android.intent.category.LAUNCHER"

表示这个活动作为当前应用程序优先级最高的活动。

--------------------------------------------------华丽的分割线-----------------------------------------------

  • 至此,对AndroidManifest.xml的简单解读告一段落,由于这是基于一个项目模板得到的文件,因此可能在今后的开发中还会遇到其他的属性或标签,遇到时再进行补充
  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值