gradle force在第三方库上构建工具版本?

Mar*_*ars 14 android gradle android-gradle-plugin

如何强制库使用sdk构建工具19.1.0或更高版本而不分支/手动编辑库的build.gradle文件?

我在使用库时不断收到此错误...

Error:The SDK Build Tools revision (.......) is too low for project ':somelibrary'. Minimum required is 19.1.0
Run Code Online (Sandbox Code Playgroud)

Sve*_*ver 47

缺乏简单的方法是我的理解.人吨使用不属于自己的图书馆项目,必须建立与詹金斯或有其他原因不能碰他们,不希望到餐桌他们供个人使用.

无论如何,我在这里找到了解决方案.

将它复制在这里以防万一:

在你的root build.gradle add中

ext {
    compileSdkVersion = 20
    buildToolsVersion = "20.0.0"
}
subprojects { subproject ->
    afterEvaluate{
        if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
            android {
                compileSdkVersion rootProject.ext.compileSdkVersion
                buildToolsVersion rootProject.ext.buildToolsVersion
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将把compileSdkVersion和buildToolsVersion应用于你拥有的任何android模块.

在您的主项目的build.gradle中更改依赖关系:

compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
Run Code Online (Sandbox Code Playgroud)

基本上你只是定义它们一次,可以在任何地方使用.

干杯.

  • 因为我对哪个gradle文件有点困惑,在Android Studio中它可能看起来像root build.gradle(Project:[ProjectName]),main project的build.gradle(Module:app) (3认同)

Rya*_* H. 5

如果仅在值太低时仅希望更新compileSdkVersionbuildToolsVersionbuildToolsVersion,则可以先比较子项目的版本号,然后仅在需要时更新。这样,您可以对其他项目进行最少的更改,并减少检查项目是否出错的项目。

因此,假设Android Studio告诉您您需要的最低构建工具版本25.0.0,然后在您的根目录中build.gradle,这是您检查每个子项目的方法,buildToolsVersion并且仅在小于以下子项目时才进行更改25.0.0

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android") && VersionNumber.parse(project.property("android").buildToolsVersion) < VersionNumber.parse("25.0.0")) {
            android {
                compileSdkVersion 25
                buildToolsVersion '25.0.0'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)