开发项目时,有时会添加多个module依赖,而在各module中,也各自添加了相关库的依赖。此时,常见问题就是同一个库,可能存在两个或更多版本,导致项目build失败。
Process 'command '/Users/zhangxueyan/Library/Android/sdk/build-tools/25.0.0/aapt'' finished with non-zero exit value 1
上图中红框即是同一个库,不同版本的情况。
那么如何解决呢?
在工程build.gradle文件中添加:
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig {
targetSdkVersion 27
}
}
}
}
}
上面设置的效果:各子module(包括app module)的compileSdkVersion、buildToolsVersion、targetSdkVersion都将按此设置。
subprojects { }
作用:配置这个项目的子项目。这个方法对这个项目的每个子项目执行给定的闭包。目标项目作为闭包的委托传递给闭包。
afterEvaluate
afterEvaluate是一般比较常见的一个配置参数的回调方式,只要project配置成功均会调用,参数类型以及写法与afterEvaluate相同