添加某依赖包后,报了如下错误
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:24:5-81:19 to override.
终极解决方案见文末
需要在AndroidManifest.xml
的application
标签中添加如下才可以
android:appComponentFactory=""
tools:replace="android:appComponentFactory"
此时sync成功,但运行时又报了如下错误
More than one file was found with OS independent path 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
意思导入了两次同一个名称的依赖,然后系统不知道要以哪一个为准。
在build.gradle(Module: app)里面,加上如下即可
packagingOptions {
exclude 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
}
接着一个又一个的冒出,添加到了如下数量还是继续有,不知何时时尽头...
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
exclude 'META-INF/androidx.localbroadcastmanager_localbroadcastmanager.version'
exclude 'META-INF/androidx.customview_customview.version'
exclude 'META-INF/androidx.legacy_legacy-support-core-ui.version'
exclude 'META-INF/androidx.drawerlayout_drawerlayout.version'
exclude 'META-INF/androidx.interpolator_interpolator.version'
exclude 'META-INF/androidx.legacy_legacy-support-core-utils.version'
exclude 'META-INF/androidx.slidingpanelayout_slidingpanelayout.version'
exclude 'META-INF/androidx.appcompat_appcompat.version'
exclude 'META-INF/androidx.swiperefreshlayout_swiperefreshlayout.version'
exclude 'META-INF/androidx.print_print.version'
exclude 'META-INF/androidx.documentfile_documentfile.version'
exclude 'META-INF/androidx.loader_loader.version'
exclude 'META-INF/androidx.viewpager_viewpager.version'
exclude 'META-INF/androidx.coordinatorlayout_coordinatorlayout.version'
exclude 'META-INF/androidx.cursoradapter_cursoradapter.version'
exclude 'META-INF/androidx.versionedparcelable_versionedparcelable.version'
exclude 'META-INF/androidx.fragment_fragment.version'
exclude 'META-INF/androidx.vectordrawable_vectordrawable.version'
exclude 'META-INF/androidx.asynclayoutinflater_asynclayoutinflater.version'
exclude 'META-INF/androidx.core_core.version'
exclude 'META-INF/androidx.vectordrawable_vectordrawable-animated.version'
}
终极解决方案
改为使用androidx
。使用androidx是趋势,晚痛不如早痛。
参考 AndroidX了解一下,大致如下
1、升级android studio
到3.2.0以上
2、更改为androidx
网友评论