当前位置:   article > 正文

Manifest merger failed with multiple errors, see logs解决方案

manifest merger failed with multiple errors, see logs

1、合并优先级
清单文件合并是按照优先级进行合并的,低优先级的清单文件内容合并到高优先级的,假如合并的时候产生了冲突就需要解决冲突
2、主工程(又区分构建体、渠道、风味) > module(按照依赖关系) > jar 包(aar)。
3、合并冲突
当低优先级的清单文件属性合并到高优先级中,假如高优先级中没有对应的属性,则直接合并,假如有并且不一样,这时候就有了冲突,应该去解决,怎么解决?
4、补充规则:
针对要合并的值不一样,该如何去合并呢?这时候就要对一些不同属性的值在不同的情况具体对待?注意manifest中的任何attribute 都可以使用补充规则
常用的需要合并的属性值有
.Android的解决方式是使用标记,合并工具会优先在高优先级的清单文件中寻找这些标记,这一点要记住。另外,在使用标记的时候,需要在根节点manifest中添加 tools 命名空间:

节点标记
merge tools:node = “merge/replace/strict/remove/removeAll/merge-only-attribute”

合并规则中很重要的一个规则是节点标记,而merge 是默认行为,当manifest 各节点属性没有声明节点标记时候,就会使用默认值。现在一一解释每个值的含义

merge  合并该attribute 所有的属性和子属性;
replace 替换其他的值,使用该清单文件的值(一般而言,都是替换掉低优先级的值)
strict    严格的意思,就是不同的清单文件,相同属性的值应该一样,否则编译失败。(一般而言,就是不同的清单文件同一个属性其值要一样)
remove  删除某个属性。
removeAll 删除某个属性及其嵌套的子属性。(相当于remove,不过是有些时候删除很多子属性时,方便一些)
merge-only-attribute :Merge attributes in this tag only; do not merge nested elements 。只合并属性,不合并嵌套的属性

属性标记
tools:remove = “attr, …” 、
tools:replace=“attr, …”
tools:strict=“attr, …”
解决方案:
首先进入命令行,输入命令

gradlew processDebugManifest --stacktrace

其中,processDebugManifest是log里面提到的,这个命令是会了获取更多的log信息。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/824214
推荐阅读
相关标签
  

闽ICP备14008679号