Manifest merger failed : Attribute application

Manifest merger failed : Attribute application@roundIcon value=(@mipmap/ic_launcher) from AndroidManifest.xml:33:13-52
    is also present at [:FacePassAndroidSDK-McvSafe-release:] AndroidManifest.xml:15:9-54 value=(@mipmap/ic_launcher_round).
    Suggestion: add 'tools:replace="android:roundIcon"' to element at AndroidManifest.xml:26:5-85:19 to override.

 

情况是这样子的,导入一个旷世的sdk,然后apk设置本身的ic_launcher图片报错:

(1) Android Studio 目前提供将 SDK包成 .aar 档案格式的方式,此方式除了将 class 包入之外,也会将资源、图片等,都一起包入。而以前所使用的 .jar 只会将相关的 class 包入,所以在以前将资源文件一起导入有时候会出问题

(2) 所有的资源文件会被 merge 在一起,什么意思呢?就是如果你自己做的SDK中包了一個 layout 叫做 abc.xml,當有个 project 使用你的SDK,而且这个 project 也有一个 layout/abc.xml,在将你的 SDK include 到 project 以后,build 的过程中,SDK中的abc.xml會和 project 中的abc.xml合并(或是取代)。

(3) 因为(2)的原因,所有的 resource file name 或是 resource id 都记得加上 prefix 或是 postfix,用 darkwing_co_abc.xml 或是 abc_darkwing_co.xml 的方式命名。不会因为合并或取代造成未知的错误。

(4) 有时候在编译的时候,遇到 attribute 重复的情况会报错误

这是因为 manifeast file 中某些 attribute 与 project 中的 minifeast 的 attribute 有重复,就像上面的我说导入另一个sdk,里面有重复的资源,就会导致系统不知道使用哪个!

这个时候可以指定下面的方式让编译器知道:
tools:replace=”android:icon,android:theme”

因为我是设置apk图片出现的问题,那么我就把android:icon,android:roundIcon放在replace里面,你们可以哪个报错放哪个,之后就可以正常运行了!

你可能感兴趣的:(Manifest merger failed : Attribute application)