升级Cordova项目到Android 12时出现cdvMinSdkVersion未知属性错误
解决Cordova升级Android 12时gradle变量未找到的问题
问题核心
旧Cordova项目升级到Android 12时,插件的gradle脚本(如cordova-plugin-browsertabs的app-BrowserTab.gradle)无法识别cdvMinSdkVersion等Cordova内部变量,同时提示compileSdkVersion is not specified,即使已经在config.xml和cdv-gradle-config.json中配置了对应参数。
解决方案
1. 升级Cordova Android平台到适配版本
这是最根本的解决办法,新版Cordova Android会正确管理gradle变量的传递:
- 先移除旧Android平台:
cordova platform remove android - 安装支持Android 12的稳定版本(推荐12.0.0及以上,对应targetSdk 33):
cordova platform add android@12.0.0 - 重新构建项目,此时Cordova会自动将
config.xml中的偏好设置映射到gradle变量,插件脚本能正确读取。
2. 修复插件的gradle配置(无法升级平台时)
如果无法升级平台,可修改插件的gradle文件(或通过钩子脚本自动修改):
- 找到插件的gradle文件(如
platforms/android/cordova-plugin-browsertabs/app-BrowserTab.gradle),将直接引用的cdvMinSdkVersion、cdvCompileSdkVersion等变量,替换为从根项目读取:// 原代码 minSdkVersion cdvMinSdkVersion compileSdkVersion cdvCompileSdkVersion // 修改后 minSdkVersion rootProject.ext.cdvMinSdkVersion compileSdkVersion rootProject.ext.cdvCompileSdkVersion - 为了避免每次添加平台后都手动修改,可编写Cordova钩子脚本(如
hooks/after_platform_add/fix_plugin_gradles.js),自动遍历所有插件的gradle文件并替换变量引用。
3. 替换或更新不兼容的插件
cordova-plugin-browsertabs的当前版本可能未适配新版Cordova Android:
- 检查插件仓库是否有更新版本,若有则更新:
cordova plugin update cordova-plugin-browsertabs - 若没有更新,可fork该插件仓库,修改其gradle配置后本地安装:
cordova plugin add ./path/to/your/forked-plugin-folder --save
4. 验证构建参数传递
尝试在构建命令中显式传递gradle参数,确保变量被正确注入:
cordova build android --release -- --keystore=****** --storePassword=******** --alias=safeprofile --password=********* -PcdvMinSdkVersion=26 -PcdvCompileSdkVersion=33 -PcdvTargetSdkVersion=33
内容的提问来源于stack exchange,提问作者Khandakar Rashed Hassan
相关产品推荐
相关产品推荐

