问题
如果编译的时候,提示以下的错误内容
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 导入的库,也会进行替换.
评论区