You should refer doFindLatestInstalledBuildTools
method in cordova.gradle file:
String doFindLatestInstalledBuildTools(String minBuildToolsVersion) {
def availableBuildToolsVersions
try {
availableBuildToolsVersions = getAvailableBuildTools()
} catch (e) {
println "An exception occurred while trying to find the Android build tools."
throw e
}
if (availableBuildToolsVersions.length > 0) {
def highestBuildToolsVersion = availableBuildToolsVersions[0]
if (compareVersions(highestBuildToolsVersion, minBuildToolsVersion) < 0) {
throw new RuntimeException(
"No usable Android build tools found. Highest installed version is " +
highestBuildToolsVersion + "; minimum version required is " +
minBuildToolsVersion + ".")
}
highestBuildToolsVersion
} else {
throw new RuntimeException(
"No installed build tools found. Install the Android build tools version " +
minBuildToolsVersion + " or higher.")
}
}
Obviosly, getAvailableBuildTools()
returns empty array:
String[] getAvailableBuildTools() {
def buildToolsDir = new File(getAndroidSdkDir(), "build-tools")
buildToolsDir.list()
.findAll { it ==~ /[0-9.]+/ }
.sort { a, b -> compareVersions(b, a) }
}
In my case, System.getenv("ANDROID_HOME")
returned wrong path in getAndroidSdkDir()
method, so the solutions are:
- Simply replace
System.getenv("ANDROID_HOME")
with your real Android SDK path (but you should remember that SDK location differs on other PCs)
- Setup correct path for
$ANDROID_HOME
environment variable
You can set build tool version manually in build.gradle
files and skip calling methods described above (be sure to setup it for all the modules in the app):
android {
buildToolsVersion "your_version_here"
}