美文网首页问题集锦
解决Manifest merger failed

解决Manifest merger failed

作者: 树蜂 | 来源:发表于2019-03-29 16:47 被阅读0次

添加某依赖包后,报了如下错误

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.xmlapplication标签中添加如下才可以

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

相关文章

网友评论

    本文标题:解决Manifest merger failed

    本文链接:https://www.haomeiwen.com/subject/gvqrbqtx.html