Android引入新库出现application@label属性重复构建报错如何解决
Android Manifest 合并时label属性冲突的解决方法
错误本质
Android构建过程会自动合并主项目、所有依赖库的AndroidManifest.xml文件,你引入的第三方库com.github.master在自身Manifest中声明了application@label属性,和主项目中定义的同名属性重复,合并规则无法判定优先使用哪个值,因此构建失败。
操作步骤
- 打开主模块(通常为
app模块)下的主Manifest文件,路径为app/src/main/AndroidManifest.xml - 在根节点
<manifest>上补充tools命名空间声明,如果已经存在该声明可跳过这步:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="你自己的项目包名">
- 找到文件中的
<application>标签,添加tools:replace="android:label"属性,该配置的作用是告知Manifest合并工具:遇到android:label属性冲突时,优先使用主项目定义的值覆盖依赖库的配置,示例如下:
<application android:icon="@mipmap/ic_launcher" android:label="Compassion" tools:replace="android:label" android:theme="@style/Theme.YourApp"> <!-- 原有Activity、Service等组件声明保持不变即可 --> </application>
- 如果你在debug源集下单独覆写了Manifest配置(对应路径
app/src/debug/AndroidManifest.xml),且该文件里也定义了<application>标签,按照同样规则给该标签加上tools:replace="android:label"即可。
扩展说明
如果后续合并时还遇到其他属性冲突(比如android:icon、android:theme、android:allowBackup等),只需要在tools:replace后用逗号分隔多个属性名即可,例如:tools:replace="android:label,android:icon,android:allowBackup"
内容的提问来源于stack exchange,提问作者Gedeon Mutshipayi
相关产品推荐
相关产品推荐

