Cordova构建安卓包提示Build Tools 31.0.0损坏,修改配置不生效如何解决
问题描述
我在尝试构建安卓应用时,一直无法在Cordova中正确设置Build Tools版本。此前我在Android Studio中遇到相同问题时,参照网上教程完成了修复,我认为可以将相同的修复思路应用到Cordova构建场景中,因此尝试在build.gradle文件中复现修复方案,修改了project.ext配置段如下:
project.ext { defaultBuildToolsVersion="30.0.3" //String defaultMinSdkVersion=22 //Integer - Minimum requirement is Android 5.1 defaultTargetSdkVersion=29 //Integer - We ALWAYS target the latest by default defaultCompileSdkVersion=29 //Integer - We ALWAYS compile with the latest by default }
但修改后重新构建仍然使用31.0.0版本,报出如下错误:
FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'. > Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 10s Command failed with exit code 1: C:\Users\adam\OneDrive\Documents\Projects\Diabetes App\Bolus-Calculator\platforms\android\gradlew cdvBuildDebug -b C:\Users\adam\OneDrive\Documents\Projects\Diabetes App\Bolus-Calculator\platforms\android\build.gradle
请问有没有方法可以在Cordova中复现该修复方案?
解决方案
你手动修改platforms/android目录下的build.gradle不生效,是因为Cordova自动生成的platform目录文件会在重新添加平台、安装部分插件时被覆盖,修改不会持久化,按照以下方法操作即可固定Build Tools版本:
方法1:通过config.xml配置(官方推荐)
直接在项目根目录的config.xml的<platform name="android">节点内添加以下配置:
<preference name="android-buildToolsVersion" value="30.0.3" /> <preference name="android-minSdkVersion" value="22" /> <preference name="android-targetSdkVersion" value="29" /> <preference name="android-compileSdkVersion" value="29" />
配置完成后执行以下命令重新生成安卓平台配置:
cordova platform remove android cordova platform add android
重新构建即可自动使用指定的30.0.3版本Build Tools。
方法2:通过gradle扩展配置强制覆盖
如果方法1不生效,一般是部分第三方插件强制指定了更高的Build Tools版本,可通过gradle扩展配置强制全局版本:
- 在项目根目录新建
build-extras.gradle文件,写入以下内容:
ext { buildToolsVersion = "30.0.3" compileSdkVersion = 29 targetSdkVersion = 29 minSdkVersion = 22 }
- 把该文件放入
platforms/android目录下,再执行构建即可。如果要避免每次重新加平台都手动复制,可以写一个简单的Cordova钩子脚本,在构建前自动复制该文件到对应目录。
临时应急方案
如果需要快速修复构建,直接打开Android SDK Manager,找到Build Tools 31.0.0版本卸载即可,构建时会自动匹配你本地已安装的30.0.3版本。
内容的提问来源于stack exchange,提问作者Adam Films
相关产品推荐
相关产品推荐

