【Android】application@label 属性属性冲突报错

错误记录
java 复制代码
 What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : Attribute application@label value=(@string/app_name) from AndroidManifest.xml:8:9-41
  	is also present at [:abslibrary] AndroidManifest.xml:25:9-47 value=(@string/app_name_next).
  	Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:5:5-21:19 to override.
原因

这个错误是因为在主项目的 AndroidManifest.xml 文件和 abslibrary模块的 AndroidManifest.xml 文件中都定义了 application@label 属性,且它们的值不一致。Gradle 在合并这些清单文件时遇到冲突,导致构建失败。

具体来说:

主项目的 AndroidManifest.xml 中定义了 application@label 为 @string/app_name,而abslibrary模块的 AndroidManifest.xml 中定义了 application@label 为 @string/app_name_next。

这两个 application@label 属性的值不同,导致在合并清单文件时发生冲突。

解决方案

有两种常见的解决方法来解决这个问题:

  1. 使用 tools:replace 来强制覆盖

你可以在主项目的 AndroidManifest.xml 文件中的 标签上添加 tools:replace="android:label",这样 Gradle 会在合并清单文件时使用主项目中的 application@label 属性值,而忽略 abslibrary中的值。

具体操作步骤:

打开主项目的 AndroidManifest.xml 文件。

在 标签中添加 tools:replace="android:label" 属性,如下所示:

java 复制代码
<application
   android:label="@string/app_name"
   android:icon="@mipmap/ic_launcher"
   tools:replace="android:label">
   <!-- 其他配置 -->
</application>

这样,tools:replace 会强制覆盖 application@label 属性,避免合并冲突。

注意:使用 tools:replace 需要在 AndroidManifest.xml 文件的顶部添加 xmlns:tools="http://schemas.android.com/tools" 声明:

java 复制代码
 <manifest xmlns:tools="http://schemas.android.com/tools" ... >
  1. 修改 abslibrary 模块中的 AndroidManifest.xml 文件

如果你希望 abslibrary 中的 application@label 属性生效,你可以修改 abslibrary 模块中的 AndroidManifest.xml 文件,删除或更改其中的 android:label 属性。

例如,在 abslibrary 模块的 AndroidManifest.xml 中,将:

java 复制代码
<application
    android:label="@string/app_name_south"
    ... >
</application>

改成不设置 android:label,或者将其值更改为和主项目一致的值,或者删除这一行配置。这样,abslibrary 模块就不会再引发冲突。

推荐的做法

一般来说,推荐使用第一个方法(即使用 tools:replace="android:label"),因为这样可以确保主项目的 application@label 属性值优先级更高,且不需要修改第三方库(如 abslibrary )的 AndroidManifest.xml 文件。

相关推荐
快点好好学习吧13 分钟前
phpize 依赖 php-config 获取 PHP 信息的庖丁解牛
android·开发语言·php
是誰萆微了承諾14 分钟前
php 对接deepseek
android·开发语言·php
Dxy12393102161 小时前
MySQL如何加唯一索引
android·数据库·mysql
冠希陈、3 小时前
PHP 判断是否是移动端,更新鸿蒙系统
android·开发语言·php
晚霞的不甘5 小时前
Flutter for OpenHarmony从零到一:构建《冰火人》双人合作闯关游戏
android·flutter·游戏·前端框架·全文检索·交互
2601_949833395 小时前
flutter_for_openharmony口腔护理app实战+饮食记录实现
android·javascript·flutter
独自破碎E5 小时前
【滑动窗口+字符计数数组】LCR_014_字符串的排列
android·java·开发语言
stevenzqzq6 小时前
compose 中 align和Arrangement的区别
android·compose
VincentWei956 小时前
Compose:MutableState 和 mutableStateOf
android
jian110586 小时前
Android studio配置flutter,mac Android studio 发现苹果手机设备
android·flutter·android studio