gpt4 book ai didi

android - buildToolsVersion 范围或 gradle 中的 '+'

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:09 26 4
gpt4 key购买 nike

我想为 Gradle 指定一系列可能的 android 构建工具版本。

在build.gradle中指定buildToolsVersion时是否可以使用+?像 buildToolsVersion 23+ 这样的东西?

或者类似编译依赖项可能的范围:

compile group: 'log4j', name: 'log4j', version: '[1.2.12,1.2.17]'

最佳答案

好问题。

是的!这是可能的。我的回答大量使用了这个 fragment :https://github.com/aayvazyan-tgm/autodetect_android_sdk_and_buildTools/blob/master/sdktools.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion getBuildVersionFromRange("23.0.2", "25.1.3")
...
}

.......

//
// get the installed SDK and build tools version
// based on: http://www.egeek.me/2013/12/07/gradle-auto-detect-android-sdk-and-build-tools-versions/
// modified by Ari Ayvazyan
import org.codehaus.groovy.runtime.StackTraceUtils

public String androidSDKDir() {
def sdkDir = android.getSdkDirectory().toString()
return sdkDir
}

public String[] buildToolsAvailable() {
println "sdk dir: " + androidSDKDir()
def buildToolsDir = new File(androidSDKDir(), "build-tools")
String[] collection = buildToolsDir.list([accept:{ d, f-> !f.contains("android") }] as FilenameFilter)
for (int i = 0; i < collection.length; i++) {
String s = collection[i]
collection[i]=s.replace("build-tools-","")
}
collection.sort { a, b -> b <=> a }
}

public String getBuildVersionFromRange(String defaultBuildTools, String maxBuildTools) {
def buildToolsVersions = buildToolsAvailable()

List maxBuild = maxBuildTools.tokenize('.')
for (int i = 0; i < buildToolsVersions.length; i++) {
def buildToolsToCheck = buildToolsVersions[i]
List currentBuild = buildToolsToCheck.tokenize('.')
boolean isPassing = true;
for (int j = 0; j < maxBuild.size(); j++) {
if (maxBuild.get(j) < currentBuild.get(j)) {
isPassing = false;
break;
}
}

if (isPassing) {
return buildToolsToCheck;
}
}

return defaultBuildTools;
}

import org.apache.tools.ant.taskdefs.condition.Os
public boolean isWindows() {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
return true
}
return false
}

getBuildVersionFromRange 的代码当然可以改进。例如,现在,第一个参数是一个回退值,但它可以被重写为范围的下边界,例如。

希望对你有帮助

关于android - buildToolsVersion 范围或 gradle 中的 '+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34534289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com