Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 第三方库上的gradle force构建工具版本?_Android_Gradle_Android Gradle Plugin - Fatal编程技术网

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

Android 第三方库上的gradle force构建工具版本?,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,如何强制库使用sdk build tools 19.1.0或更高版本,而无需分叉/手动编辑库的build.gradle文件 我在使用库时不断遇到此错误 Error:The SDK Build Tools revision (.......) is too low for project ':somelibrary'. Minimum required is 19.1.0 缺乏简单的方法做这件事超出了我的理解。很多人使用图书馆项目,这些项目不是他们自己的,必须与詹金斯一起建立,或者有其他理由不去

如何强制库使用sdk build tools 19.1.0或更高版本,而无需分叉/手动编辑库的build.gradle文件

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

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

缺乏简单的方法做这件事超出了我的理解。很多人使用图书馆项目,这些项目不是他们自己的,必须与詹金斯一起建立,或者有其他理由不去碰它们,也不想把它们用于个人用途

不管怎样,我找到了解决办法

将在此处复制,以防万一:

在您的root build.gradle中添加

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
            }
        }
    }
}
这将把compileSdkVersion和buildToolsVersion应用于您拥有的任何android模块

并在主项目的build.gradle中更改对此的依赖项:

compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
基本上,您只需定义一次,就可以在任何地方使用它们


干杯。

缺少简单的方法是我无法理解的。很多人使用图书馆项目,这些项目不是他们自己的,必须与詹金斯一起建立,或者有其他理由不去碰它们,也不想把它们用于个人用途

不管怎样,我找到了解决办法

将在此处复制,以防万一:

在您的root build.gradle中添加

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
            }
        }
    }
}
这将把compileSdkVersion和buildToolsVersion应用于您拥有的任何android模块

并在主项目的build.gradle中更改对此的依赖项:

compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
基本上,您只需定义一次,就可以在任何地方使用它们


干杯。

如果您只想在
buildToolsVersion
值过低时更新
compileSdkVersion
buildToolsVersion
值,您可以首先比较子项目的版本号,仅在需要时更新。这样,您可以对其他项目进行最小的更改,并减少检查是否出错的项目

所以,假设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'
            }
        }
    }
}
子项目{
评估后{项目->
if(project.hasProperty(“android”)&&VersionNumber.parse(project.property(“android”).buildToolsVersion)
如果仅在
buildToolsVersion
值过低时才想更新
compileSdkVersion
buildToolsVersion
值,则可以首先比较子项目的版本号,仅在需要时更新。这样,您可以对其他项目进行最小的更改,并减少检查是否出错的项目

所以,假设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'
            }
        }
    }
}
子项目{
评估后{项目->
if(project.hasProperty(“android”)&&VersionNumber.parse(project.property(“android”).buildToolsVersion)
因为我对哪些gradle文件有点困惑,在Android Studio中它可能看起来像root build.gradle(Project:[ProjectName]),主项目的build.gradle(Module:app)非常漂亮和干净,因为我对哪些gradle文件有点困惑,在Android Studio中它可能看起来像root build.gradle(Project:[ProjectName]),主项目的build.gradle(Module:app)非常漂亮,非常干净!这修复了“react native sqlite storage”“找不到与给定名称匹配的资源:attr'android:keyboardNavigationCluster'”和“'android:TextAppearance.Material.Widget.Button.Color”中的这些错误等等。如果有人用谷歌搜索这些错误,主要原因是我的项目的buildToolsVersion和“react native sqlite storage”库的buildToolsVersion之间的差异。该库使用23.0.1,而我的项目使用26.0.1。最后,根据上面的答案,我成功地强制该库使用26.0.1版本的构建工具和错误消失。太棒了!这修复了“react native sqlite storage”“未找到与给定名称匹配的资源:attr'android:keyboardNavigationCluster'”和“'android:TextAppearance.Material.Widget.Button.Color'”中的这些错误等等。如果有人用谷歌搜索这些错误,主要原因是我的项目的buildToolsVersion和“react native sqlite storage”库的buildToolsVersion之间的差异。该库使用23.0.1,而我的项目使用26.0.1。最后,根据上面的答案,我成功地强制该库使用26.0.1版本的构建工具和错误消失了。