Mac端cordova-hot-code-push-plugin运行iOS项目报错咨询
问题现象
使用cordova-hot-code-push-plugin实现热代码推送功能,安卓端运行无异常,在Mac环境执行cordova run ios命令运行iOS项目时出现报错,报错信息如下:
CHCP plugin after prepare hook: Failed to load iOS project file. Maybe your Cordova version is not supported?
当前使用的开发工具版本信息:
cordova 11.0.0 cordova-ios 6.2.0 Xcode 13.3 Build version 13E113
报错原因
cordova-hot-code-push-plugin官方已停止维护,内置的iOS端prepare钩子脚本仅适配cordova-ios 5.x及更早版本的项目结构。cordova-ios 6.0及以上版本调整了Xcode项目文件的存放路径,钩子脚本按原有逻辑无法定位到.xcodeproj文件,就会抛出该报错。
可行解决方案
- 方案1:本地修改插件脚本适配高版本cordova-ios
- 打开项目中插件目录下的
cordova-hot-code-push-plugin/scripts/lib/iosWKWebViewEngineSupport.js文件(如果找不到该文件,直接在插件目录搜索.xcodeproj关键字定位对应逻辑即可) - 找到脚本中匹配iOS项目文件的代码,原有逻辑一般是
var projectFiles = glob.sync('platforms/ios/*.xcodeproj');,将匹配规则修改为var projectFiles = glob.sync('platforms/ios/**/*.xcodeproj');,让脚本可以递归扫描子目录下的项目文件 - 保存修改后重新执行
cordova run ios即可验证效果
提示:如果后续重新安装插件、重新添加iOS平台,本地修改的内容会被覆盖,建议把修改后的插件存放到项目本地目录,通过本地路径安装插件避免配置丢失。
- 打开项目中插件目录下的
- 方案2:更换为社区维护的兼容版热更新插件
原插件停更后有开发者fork维护了兼容版本,已经适配cordova-ios 6+、cordova-android 10+等新版本环境,卸载原插件后安装兼容版本即可,不需要手动修改代码。 - 方案3:降级cordova-ios版本
如果不想修改插件代码也不想更换插件,可以将iOS平台版本降级到原插件适配的5.1.1版本,执行命令cordova platform rm ios && cordova platform add ios@5.1.1重新安装平台即可,注意降级后需要匹配对应支持的Xcode版本,避免触发其他兼容问题。
内容的提问来源于stack exchange,提问作者cy lee
相关产品推荐
相关产品推荐

