今天在使用GitHub上面的开源项目SweetAlertDialog时,出现Android Studio导入第三方依赖库时报错,出现这个:
所导入的依赖为这个
SweetAlertDialog:
https://github.com/pedant/sweet-alert-dialog
于是多管闲事的我试着导入了下,也出错了,不过没出现上面截图的错误,而出现Manifest merger failed(Manifest合并失败)
错误,如下图:
1 | Error:(7, 9) Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9 |
分析错误提示,
- 主程序module清单文件中,
application
节点的android:icon
属性引用了@mipmap/ic_launcher
图片资源, - 而依赖module的清单文件中,同样的
android:icon
属性却引用了@drawable/ic_launcher
这个图片资源,
两个属性值产生冲突,导致合并清单文件失败。
虽然知道错误是什么,但是仍然不知道咋解决啊。
其实英语没那么糟糕,细心点的话,就能看到错误提示中就给出了解决问题的建议。
Suggestion: add ‘tools:replace=”android:icon”‘ to element at AndroidManifest.xml:5:5 to override
意思在AndroidManifest.xml
文件的<application>
节点中添加tools:replace="android:icon"
属性。
按提示进行修改,再同步Gradle,问题解决。
tools:replace
属性的作用可以在这个页面找到(需要搭梯)
http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger
在页面搜索 Override an attribute coming from a library
即可定位到。