随着开发项目变大,我们经常会有几十个module,里面有各自的build.gradle文件,各种编译的sdk,库版本等配置。目前搜到的都是类似下面的方案,每个build.gradle都要改,累不累?最重要是这个玩意别的地方改了,你不知道。。。
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
}
我们都会想做全局控制,下面这串模板代码可以帮你做到这个效果:
subprojects {
//修改别的字段看这个官方文档:https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.AppExtension.html
project.afterEvaluate {
project.plugins.withId('com.android.library') {
println("start change config ,libName=" + project.name)
project.android.compileSdkVersion rootProject.ext.compileSdkVersion
project.android.defaultConfig.minSdkVersion rootProject.ext.minSdkVersion
project.android.defaultConfig.targetSdkVersion rootProject.ext.targetSdkVersion
}
}
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) {
details.useVersion rootProject.ext.support_version
}
if (details.requested.group == 'org.slf4j') {
details.useVersion rootProject.ext.slf4jVersion
}
}
}
}
ext{
compileSdkVersion = 28
minSdkVersion = 15
targetSdkVersion = 28
support_version = "27.0.2"
slf4jVersion="1.7.5"
}
只需要在项目的最外面的build.gradle里面加多这个,就可以做到全局控制啦!
android-gradle
觉得有用的点个赞!