【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 文件。

相关推荐
掘金酱5 小时前
稀土掘金社区2024年度影响力榜单正式公布
android·前端·后端
二流小码农5 小时前
鸿蒙开发:自定义一个英文键盘
android·ios·harmonyos
二流小码农5 小时前
鸿蒙开发:自定义一个股票代码选择键盘
android·ios·harmonyos
kim56595 小时前
android studio 写一个小计时器
android·ide·android studio
JasonYin~7 小时前
HarmonyOS NEXT 实战之元服务:静态多案例效果(一)
android·华为·harmonyos
美团测试工程师7 小时前
Android 手机自动化测试工具有哪几种?
android·软件测试·智能手机
二流小码农8 小时前
鸿蒙开发:文本合成语音
android·ios·harmonyos
大胃粥8 小时前
Android U WMS: 近期任务动画(2)
android
绝命三郎10 小时前
Android中使用AIDL实现进程通信
android
m0_7482546612 小时前
MySQL 窗口函数
android·数据库·mysql