cordova build android提示No installed build tools found的解决方法

开发Hybrid应用,一般都会和Cordova(Phonegap)打交道,Cordova环境没配置好会影响开发,其中可能会遇到下面的问题:

cordova build android提示"No installed build tools found. Please install the Android build tools version "

解决方法:把android 的sdk目录\build-tools里的文件夹改成小数就好了,如把android-22改成22(在sdk几个文件夹下,android-22是常见的目录名称,所以不会留意到这个原因导致异常)

至于解决过程有兴趣继续往下看:

这段异常提示来自哪里呢?

它在CordovaLib/cordova.gradle文件里面(源文件64行,这片段的27行):

String[] getAvailableBuildTools() {
    def buildToolsDir = new File(getAndroidSdkDir(), "build-tools")
    buildToolsDir.list()
        .findAll { it ==~ /[0-9.]+/ }
        .sort { a, b -> compareVersions(b, a) }
}

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. Please install the Android build tools version " +
            minBuildToolsVersion + " or higher.")
    }
}

这是Groovy语言,看代码,要提示这个异常,要达到下面条件:
availableBuildToolsVersions.length<=0

而这个变量来自函数getAvailableBuildTools(),函数意思是获取可用目录,看这个函数的实现,它是在androd的SDK目录/build-tools下查找所有文件夹,然后通过一个findAll正则表达式匹配:

findAll { it ==~ /[0-9.]+/ }
其中==~:用法跟=~类似,只是特指精确匹配,及左边的和右边的模式进行匹配。而右边的正则表达式意思是(0到9和.号的组合)的1到多个,也就是说没有字母和其它字符,于是答案就揭晓了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值