刚接手一个公司的新项目,运行一直报错:
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:6:5-21:19 to override.
按上面的提示修改如下:
<application android:name=".App" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:resizeableActivity="true" android:supportsRtl="true" android:theme="@style/AppTheme" tools:replace="android:appComponentFactory" //按上面的要求添加 android:appComponentFactory="任意字符" //这个也要添加 >
以为就此解决了,再编译下还是报错:
> More than one file was found with OS independent path 'META-INF/androidx.versionedparcelable_versionedparcelable.version'
意思是一个文件在多个库中引入了,并且还提示了AndroidX,于是我想到了是不是还是androidX的冲突,但是我并没有引入androidX,见鬼了?怎么解决?
猜想:
我自己没引入,那可能是第三方库引入了呗。
行动:
在 Terminal 中输入gradlew :app:dependencies
命令,查看第三方库的依赖树并找出引用了 androidx的库;
发现最新的butterknife引入了androidX,终于解决了问题