Android 第三方库上的gradle force构建工具版本?
如何强制库使用sdk build tools 19.1.0或更高版本,而无需分叉/手动编辑库的build.gradle文件 我在使用库时不断遇到此错误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 缺乏简单的方法做这件事超出了我的理解。很多人使用图书馆项目,这些项目不是他们自己的,必须与詹金斯一起建立,或者有其他理由不去
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版本的构建工具和错误消失了。