赞
踩
最近在做组件集成,将遇到的问题记录一些。
当我把Module到到App里面并配置了依赖同步一些项目的时候提示Manifest merger failed查看提示Suggestion: add ‘tools:replace=“android:appComponentFactory”’,照着提示修改Manifest文件还是提示错误。
ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at manifestMerger4843771718690322480.xml:7:5-9:19 to override.
仔细看会发现Module和App的里面有文件冲突,一个是support.v4包一个是androidx包,
当我们把AndroidManifest文件打开,并切换到合并后的清单文件<点击下面的Merged Manifest>没有发现Manifest合并冲突。对于多Module集成合并Manifest文件规则可以参考安卓Manifest合并规则。
查看文件依赖,可以看到有androidx包和support包,它们不能兼容,对于support包和androidx冲突问问题,我们可以选择support包向androidx转换,也可以向support转换,AndroidStudio给我们提供了相应的快捷方式
我选择后者,转换同步后,还是没有解决问题。
那是神马情况嘞,一定是依赖库依赖的第三方库依赖了androidx,那我们如何查看嘞,
如下所示:Project Structure ->(选中你的Module) ->All Dependencies ->点击右侧的Resolved Dependencies 就可以查看到依赖的第三方库了,可以看到butterknife确实依赖了androidx的库了
好,现在已经定位到问题了,那就降低butterknife的版本,在github上找到butterknife的库,查看issue,发现别人早就遇到过这类问题了,里面有一条是这样描述的
作者建议使用9.0.0的版本。
于是果断切换版本到9.0.0并添加对java 8的支持就可以了。至于如何在library中使用butterknife可以参见大佬的github地址是https://github.com/JakeWharton/butterknife。
好久没有写博客了,写出来的文字都那么生硬,将就一下吧,嘻嘻…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。