清单合并工具:tools:replace没有任何效果。

3

我正在使用图像选择库在我的应用程序中,这个库已经定义了android:icon属性,所以为了使gradle成功构建,我需要覆盖这个属性:

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

    <application
        android:icon="@drawable/icon"
         tools:replace="icon"/>

</manifest>

但是我仍然收到以下提示:

清单合并失败:属性application@icon的值(@drawable/icon)来自AndroidManifest.xml:20:9, 也出现在com.kbeanie:image-chooser-library:1.4.3:13:9,值为(@drawable/ic_launcher) 建议:在AndroidManifest.xml:15:5元素中添加“tools:replace="android:icon"”,以覆盖。

有任何建议吗?

3个回答

13
我也遇到了同样的问题。由于在多个构建机器上发生了这种情况,并且当我创建一个仅包含引起问题的库的测试项目时,一切都正常工作,因此我怀疑清单合并工具中存在某些错误。
我通过更改gradle文件中依赖项的顺序来解决它(引起问题的库是列表中的最后一个,我将其移到了顶部)。

我尝试了所有的方法,最终这个方法对我有效!谢谢。 - Silvia H
谢谢。当tools:replace似乎没有任何效果时,这绝对是解决方案。 - Pirdad Sakhizada
千万次感谢! - Borislav Kamenov

2
您可以尝试在build.gradle文件中(在标签中)添加useOldManifestMerger true,但是该功能已从1.0.0 gradle插件版本中删除。
或者,在您的AndroidManifest.xml中添加tools:replace="android:icon"。(警告:您应该首先在标记中添加xmlns:tools="http://schemas.android.com/tools"
有关清单合并的更多信息,请访问官方文档

0

我在我的清单上检查了一下,它是

tools:replace="android:icon"

不仅仅是"icon"


1
尝试了两个版本,都不行。 - Evgeni Roitburg
值得一试,虽然这解决了我的问题...嗯,试试清理? - lemuel
@EvgeniRoitburg 也可以尝试将 tools:replace 放在 android:icon 之前。只是一个想法... - lemuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接