Skip to content

Instantly share code, notes, and snippets.

@JeppeLeth
Created April 14, 2017 07:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JeppeLeth/378ce76fe7430a0bf59ded8c02c2e816 to your computer and use it in GitHub Desktop.
Save JeppeLeth/378ce76fe7430a0bf59ded8c02c2e816 to your computer and use it in GitHub Desktop.
Android gradle: Lastest buildToolsVersions and sdkVersion
import org.codehaus.groovy.runtime.StackTraceUtils
int[] sdksAvailable() {
def sdks = new ByteArrayOutputStream()
exec {
commandLine 'android', 'list'
standardOutput = sdks
}
sdks = sdks
// get the output
.toString()
// split to strings
.split('\n')
// leave only strings with API levels
.findAll { it ==~ /\s*API level:.*/ }
// extract the API levels
.collect { (it =~ /\s*API level:\s*(\d+).*/)[0][1].toInteger() }
// sort from highest to lowest
.sort( { a, b -> b <=> a } )
sdks
}
int highestSdkAvailable(int defaultSdk) {
try {
def sdks = sdksAvailable()
def highestSdk = sdks[0]
if (highestSdk != null) {
println "Using highest found SDK " + highestSdk
highestSdk
} else {
println "No installed SDKs found. Using default SDK " + defaultSdk
defaultSdk
}
} catch (any) {
println "Exception while determining highest SDK. Using default SDK " +
defaultSdk
StackTraceUtils.sanitize(any).printStackTrace()
defaultSdk
}
}
String androidSDKDir() {
def androidExecPath = new ByteArrayOutputStream()
exec {
commandLine 'which', 'android'
standardOutput = androidExecPath
}
file(androidExecPath.toString().trim()).getParentFile().getParentFile()
}
String[] buildToolsAvailable() {
def buildToolsDir = new File(androidSDKDir(), "build-tools")
buildToolsDir.list().sort { a, b -> b <=> a }
}
String latestBuildToolsAvailable(String defaultBuildTools) {
try {
def buildToolsVersions = buildToolsAvailable()
def latestBuildTools = buildToolsVersions[0]
if (latestBuildTools != null) {
println "Using latest found build tools " + latestBuildTools
latestBuildTools
} else {
println "No installed build tools found. Using default build tools " +
defaultBuildTools
defaultBuildTools
}
} catch (any) {
println "Exception while determining latest build tools. Using default build tools " +
defaultBuildTools
StackTraceUtils.sanitize(any).printStackTrace()
defaultBuildTools
}
}
ext.compileSdkVersion = highestSdkAvailable(19)
ext.buildToolsVersion = latestBuildToolsAvailable("19.0.0")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment