Cordova中Android API版本指定方法及默认选API23原因解析
嘿,这个问题我刚好碰到过,来给你捋清楚哈~
核心原因是你使用的cordova-template-mfp(MobileFirst Platform Cordova模板)默认绑定了特定版本的cordova-android插件,而每个cordova-android版本都对应一个默认的Target/Compile SDK版本。比如早期的cordova-android 6.x系列默认就会使用API 23,哪怕你本地SDK里有更高版本,Cordova也会优先遵循当前cordova-android包的默认配置,不会自动匹配你已安装的最新SDK。另外要纠正个小细节:API 23对应的是Android 6.0,不是5.1.1哦😉
当然有,主要有这几个关键配置点:
- 项目根目录的
config.xml:这是最推荐的持久化配置方式,修改后不会被cordova prepare覆盖 platforms/android/build.gradle:这个是自动生成的构建文件,直接修改会被后续的Cordova命令覆盖,所以不建议手动改package.json:可以通过指定cordova-android的依赖版本,间接控制默认的API版本范围
给你三种靠谱的方法,按需选择:
方法1:添加平台时直接指定参数
在添加Android平台的命令里,通过--variable参数直接指定SDK版本,比如你要API 27的话:
cordova platform add android@7.1.0 --variable ANDROID_TARGET_SDK_VERSION=27 --variable ANDROID_COMPILE_SDK_VERSION=27
这里的android@7.1.0是对应API27的cordova-android版本,给你个大致的版本对应参考:
cordova-android 7.x→ 支持API26/27cordova-android 8.x→ 支持API28cordova-android 9.x→ 支持API29
方法2:修改config.xml持久化配置
打开项目根目录的config.xml,在<platform name="android">节点下添加偏好设置,这样每次执行cordova prepare都会自动应用:
<platform name="android"> <!-- 指定目标SDK版本 --> <preference name="android-targetSdkVersion" value="27" /> <!-- 指定编译SDK版本 --> <preference name="android-compileSdkVersion" value="27" /> <!-- 可选:指定最低支持的SDK版本 --> <preference name="android-minSdkVersion" value="22" /> </platform>
修改完后执行cordova prepare android让配置生效即可。
方法3:升级/指定cordova-android版本
如果当前模板默认安装的cordova-android版本太旧,你可以先移除旧平台,再安装对应目标API版本的cordova-android:
# 先移除旧平台 cordova platform remove android # 安装指定版本的cordova-android(比如对应API27的7.1.0) cordova platform add android@7.1.0
之后再配合config.xml的偏好设置,就能牢牢锁定你需要的API版本了。
⚠️ 小提醒:MobileFirst Platform对cordova-android版本可能有兼容性要求,操作前最好确认下你的MFP版本支持的cordova-android范围,避免出现兼容性问题哦。
内容的提问来源于stack exchange,提问作者Heni

