android studio 引用第三方工程Manifest merger failed

昨天在gradle中引用第三方包,報了個錯:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(25.3.0) from [com.android.support:design:25.3.0] AndroidManifest.xml:27:9-31is also present at [com.android.support:appcompat-v7:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:25:5-27:34 to override.

錯誤提示,上面說是在合并 Manifest 的時候出錯了,(在引用第三方工程 compile 的時候會合并所有第三方工程,和我們工程的Manifest)根據上面的說法是support 包版本不統一。于是乎,根據提示,這么搞:

step 1: 在manifest 根目錄添加 xmlns:tools=\"http://schemas.android.com/tools\"
step 2:在application 節點下添加 tools:replace="android:value"

然而,對我的工程來說這并沒有什么卵用,~~~~~~~~
報了另外一個錯:

error: Error:Execution failed for task ':app:processDebugManifest'. > Manifest merger failed with multiple errors, see logs –

于是又繼續填坑之路,終于在stack overflow 看到了大招

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.0'
            }
        }
    }
}

這段代碼的意思是:給所有工程的support 庫強制指定同一個版本號。

然后,沒然后了~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,118評論 25 708
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa閱讀 8,900評論 0 6
  • transformClassesWithJarMergingForDebug 1.dexDebug ExecExc...
    奈何心善閱讀 1,536評論 0 0
  • 生命有無限可能,奇跡時刻會發生,加多一個但是,全軍覆沒。我們己在固化模式,想要跳出來,是要經歷突破和超越的篤定信念。
    心兒聊茶閱讀 221評論 0 0