昨天在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 庫強制指定同一個版本號。
然后,沒然后了~