Created
April 14, 2017 07:43
-
-
Save JeppeLeth/378ce76fe7430a0bf59ded8c02c2e816 to your computer and use it in GitHub Desktop.
Android gradle: Lastest buildToolsVersions and sdkVersion
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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