侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 274 篇文章
  • 累计创建 55 个标签
  • 累计收到 74 条评论

AndroidX 与AndroidSupport 库冲突问题解决方案

Z同学
2021-06-16 / 1 评论 / 1 点赞 / 1,221 阅读 / 1,073 字
温馨提示:
本文最后更新于 2021-12-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题

如果编译的时候,提示以下的错误内容

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 AndroidManifest.xml:36:5-364:19 to override.

等类似的,需要你添加tools:replace="android:appComponentFactory"

介绍

其实出现上面的问题时,很大可能是你的项目之中引用了两种库,一个AndroidX和AndroidSupport-v7
或者由你implementation 导入的第三方库使用了.

一般这种情况下,大概率是第三方库使用了v7库,而你当前项目用的androidx库.

这种情况下有两个解决方法.
1.将你的第三方库进行升级
通常情况下最新的都应该支持androidX了才对.

而你不知道哪个库调用的话,可以通过以下命令进行查询:

在Android Studio之中的Terminal之中输入:gradlew :app:dependencies 指令.

如果有引用库,它就会以树状图的形式进行展示
指令输出结果参考图

找到哪些包.进行升级即可.

但是如果包无法进行升级又该如何呢?那就用到第二种解决方法了

2.通过指令进行替换
我们在Project 目录里面的gradle.properties文件中,添加下面的配置

android.useAndroidX=true
//我们现在项目默认生成的时候,都是只有上面的命令,没有下面这条命令
android.enableJetifier=true

android.enableJetifier 它会强制将项目之中的support库替换成androidX. 即使是通过implementation 导入的库,也会进行替换.

1

评论区