美文网首页问题集锦
解决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