AndroidManifest.xml

安卓开发配置文件/清单文件,类似html。

1. 定义

AndroidManifest.xml 是安卓应用的全局配置文件,位于项目 src/main/ 目录下,是安卓系统识别应用的「身份证」。它包含了应用的包名、组件注册、权限申请、系统兼容等核心信息,安卓系统启动应用、加载组件时,第一步就是读取这个文件。

2. 语法类型:XML

核心规则 示例 / 说明
标签必须闭合 <activity>...</activity>(成对闭合)或 <application />(自闭合,无内容时用)
标签有层级(父子关系) <manifest> 是根标签,<application> 是其子标签,<activity> 又是 <application> 的子标签
属性用键值对表示 android:name=".MainActivity"android: 是命名空间前缀,name 是属性名,值用双引号包裹)
命名空间必须声明 根标签 <manifest> 中必须声明 xmlns:android="http://schemas.android.com/apk/res/android"(否则android: 前缀无效)

3. 核心结构(从上到下的层级)

<?xml version="1.0" encoding="utf-8"?>
<!-- 根标签:整个配置的入口,包含包名和命名空间 -->
<!-- xmlns:android="http://schemas.android.com/apk/res/android" 是安卓系统属性的官方命名空间地址,相当于告诉系统:以android为前缀的属性,都遵循安卓系统的标准。 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.seres.logadbdemo2">

    <!-- 权限申请:应用需要的系统权限(比如联网、拍照) -->
    <uses-permission android:name="android.permission.INTERNET" />

    <!-- 应用核心配置:包含所有组件(Activity/Receiver/Service等) -->
    <application
        android:name=".MyApp"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name">

        <!-- 界面组件:Activity(用户交互的界面) -->
        <activity android:name=".MainActivity" android:exported="true">
            <!-- intent-filter:主页面 -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 广播组件:BroadcastReceiver(接收外部指令) -->
        <receiver android:name=".LogLevelReceiver" android:exported="true">
            <intent-filter>
                <action android:name="com.seres.logadbdemo2.CHANGE_LOG_LEVEL" />
            </intent-filter>
        </receiver>

    </application>

</manifest>

二、<application> 标签详解(核心配置)

<application> 是 AndroidManifest.xml 中最核心的子标签,用于配置应用的全局属性注册所有组件(Activity、BroadcastReceiver、Service、ContentProvider)。

1. 核心作用

  • 定义应用的全局特征(图标、名称、主题、权限等);
  • 作为所有组件的「容器」,所有组件必须嵌套在 <application> 内才能被系统识别。

2. 常用属性(新手必掌握)

属性名 作用 示例
android:name 自定义的 Application 类(全局初始化用) android:name=".MyApp"
android:icon 应用的图标(桌面图标、任务栏图标) android:icon="@mipmap/ic_launcher"
android:label 应用的名称(桌面图标下方的文字、应用内的标题栏) android:label="@string/app_name"
android:theme 应用的全局主题(控制界面样式,比如有无标题栏、颜色) android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:allowBackup 是否允许应用数据备份(测试包默认 true,正式包建议根据需求设置) android:allowBackup="true"
android:exported (安卓 12 + 新增)应用是否允许外部访问(默认 false,一般无需设置) android:exported="false"
android:debuggable 是否为调试模式(debug 包默认 true,release 包默认 false android:debuggable="true"

3. 组件注册(<application> 内的子标签)

所有安卓组件必须在 <application> 内注册,否则系统无法识别:

组件标签 作用
<activity> 界面组件(用户交互的窗口,比如 MainActivity)
<receiver> 广播接收器(接收系统 / 外部广播,比如 LogLevelReceiver)
<service> 服务组件(后台运行的任务,比如音乐播放、数据下载)
<provider> 内容提供者(跨应用共享数据,比如通讯录、相册)

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

    <application
        android:name=".MyApp"
        android:allowBackup="true" <!-- 是否允许app备份数据 -->
        android:icon="@mipmap/ic_launcher"  <!-- app图标为res/mipmap/ic_launcher -->
        android:label="@string/app_name"   <!-- app名称为res/string下面的命名,string标签的app_name属性来取,也可以直接写“logadbdemo2” -->
        android:roundIcon="@mipmap/ic_launcher_round" <!-- 不同android版本选取的图标不同 -->
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <!-- 主题 -->

    <!-- 主界面(必含MAIN/LAUNCHER标签,保证有图标) -->
    <activity
        android:name=".MainActivity"  <!--MainActivity.kt文件,一个MainActivity表示一个显示页面 -->
        android:exported="true">
        <intent-filter>  <!-- 起始页,固定 -->
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <!-- ADB广播接收器(车机无UI时修改日志等级) -->
    <receiver
        android:name=".LogLevelReceiver"
        android:exported="true"
        android:enabled="true">
        <intent-filter android:priority="1000">
            <action android:name="com.seres.logadbdemo2.CHANGE_LOG_LEVEL" />
        </intent-filter>
    </receiver>
    </application>

</manifest>

<manifest>  //整个文件的标签,所有标签都要包含在这里面

        <application>   //第一个就是app,这也是APP的由来

        </application>

</manifest>

常见的 AppCompat 主题(新手常用)

主题名称 效果描述
Theme.AppCompat.Light.NoActionBar 浅色主题 + 无标题栏(最常用)
Theme.AppCompat.Light 浅色主题 + 显示默认标题栏
Theme.AppCompat.DayNight.NoActionBar 跟随系统的浅色 / 深色主题 + 无标题栏(安卓 10 + 支持)
Theme.AppCompat.NoActionBar 深色主题 + 无标题栏

主页面:MainActivity.kt & activity_main.xml

主页面:在AndroidManifest.xml中声明.MainActivity作为首页面,MainActivity.kt中的代码需要与activity_main.xml布局绑定。不然会是空白页面。

·这两个文件的命名和存放位置都不是完全固定的,只不过遵循开发的习惯。

存放位置:

1. MainActivity.kt(kotlin代码文件)

作为kotlin文件,必须放在必须放在 src/main/java/ 目录下的任意子目录一般放在app/src/main/java/[你的包名]/MainActivity.kt。

2.activity_main.xml(布局文件)

  • 必须放在 src/main/res/ 目录下的以 layout 开头的子目录(这是安卓的资源目录规范):
    • layout/:默认布局目录(适配所有设备);
    • layout-land/:横屏布局目录;
    • layout-v21/:安卓 5.0+ 设备的布局目录;
    • 你也可以自定义 layout-large/(大屏设备)等。
  • 不能放在 res/values/(字符串 / 样式目录)、res/mipmap/(图标目录)等其他资源目录,否则安卓系统无法识别为布局文件。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐