Cordova Android升级compileSdkVersion至API 30构建APK咨询
解决方案
Cordova-Android 9 版本原生不支持在 config.xml 中直接配置 compileSdkVersion、buildToolsVersion 参数,这两个偏好配置是从 Cordova-Android 10.0.0 版本才开始正式支持的,你现有配置不生效属于版本特性限制,可选择以下任意一种方式实现API 30构建:
方案1:升级到cordova-android 10及以上版本(最推荐)
升级后你当前写在config.xml里的两个配置可以直接生效,不需要额外修改。升级命令:
cordova platform rm android cordova platform add android@10
升级后直接正常构建即可调用你配置的API 30参数。
方案2:不升级cordova-android版本,手动修改平台构建配置
如果暂时不能升级版本,可以按以下步骤操作:
- 第一步:先正常添加android平台
cordova platform add android@9 - 第二步:打开项目路径
platforms/android/build.gradle文件,找到以下变量修改为对应值:ext { buildToolsVersion = "30.0.3" compileSdkVersion = 30 targetSdkVersion = 30 // 建议同步修改targetSdkVersion避免兼容性问题 } - 第三步:直接构建APK即可生效
注意:该方案的修改会在你每次移除、重新添加android平台后失效,需要重新修改。
方案3:使用构建钩子实现自动修改(适合9版本长期使用)
你可以添加cordova构建钩子,在每次平台添加完成后自动替换build.gradle中的参数值,不需要每次手动修改:
- 在项目根目录新建
hooks/after_platform_add/set_sdk_versions.js文件,写入以下代码:
const fs = require('fs'); const path = require('path'); module.exports = function(ctx) { const buildGradlePath = path.join(ctx.opts.projectRoot, 'platforms/android/build.gradle'); let gradleContent = fs.readFileSync(buildGradlePath, 'utf8'); gradleContent = gradleContent.replace(/buildToolsVersion\s*=\s*"[^"]+"/, 'buildToolsVersion = "30.0.3"'); gradleContent = gradleContent.replace(/compileSdkVersion\s*=\s*\d+/, 'compileSdkVersion = 30'); gradleContent = gradleContent.replace(/targetSdkVersion\s*=\s*\d+/, 'targetSdkVersion = 30'); fs.writeFileSync(buildGradlePath, gradleContent, 'utf8'); }
- 给文件添加执行权限(Windows环境可跳过)
- 后续每次添加android平台都会自动修改对应参数,不需要手动操作。
内容的提问来源于stack exchange,提问作者user2313833
相关产品推荐
相关产品推荐

