昨天在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 库强制指定同一个版本号。
然后,没然后了~
网友评论