Cordova升级UIWebView至WKWebView遇'CDVURLProtocol.h'缺失错误求助
解决Cordova iOS升级6.0.0后WKWebView适配及
CDVURLProtocol.h缺失问题 1. 清理旧残留与缓存
先彻底清理可能存在的旧插件、平台文件和缓存,避免版本冲突:
# 移除已安装的WKWebView插件 cordova plugin remove cordova-plugin-wkwebview-engine # 清理Cordova缓存与旧平台文件 cordova clean ios rm -rf platforms/ios plugins package-lock.json node_modules # 重新安装npm依赖 npm install
2. 重新添加iOS平台与WKWebView插件
重新指定iOS平台版本并安装插件,确保依赖匹配:
cordova platform add ios@6.0.0 cordova plugin add cordova-plugin-wkwebview-engine
3. 修复CDVURLProtocol.h缺失问题
Cordova iOS 6.x已移除CDVURLProtocol模块,这个错误是因为项目或第三方插件还在引用它:
- 检查
platforms/ios目录下的所有原生代码(.h/.m文件),删除所有#import <Cordova/CDVURLProtocol.h>的引用 - 排查第三方插件,将依赖
CDVURLProtocol的插件升级到兼容Cordova iOS 6.x的版本,直接移除不兼容的插件
4. 强制启用WKWebView作为默认WebView
在项目根目录的config.xml中添加配置,确保Cordova默认使用WKWebView:
<!-- 指定WKWebView为默认引擎 --> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" /> <!-- 强制仅使用WKWebView --> <preference name="WKWebViewOnly" value="true" /> <!-- 可选:添加WKWebView常用偏好设置 --> <preference name="AllowBackForwardNavigationGestures" value="true" /> <preference name="AllowInlineMediaPlayback" value="true" />
5. 适配Xcode 14构建要求
打开platforms/ios下的Xcode项目,做以下调整:
- 将项目Deployment Target设置为iOS 11.0或更高(Cordova iOS 6.x最低要求)
- 在
Build Settings中搜索Enable Bitcode,设置为No(部分插件不支持Bitcode) - 执行
Product > Clean Build Folder清理Xcode缓存,再重新构建项目
6. 验证WKWebView是否生效
项目运行后,在调试控制台输入以下代码验证:
console.log(window.webkit); // 输出存在则说明当前为WKWebView
或者在原生代码中添加日志确认:
NSLog(@"当前WebView类型:%@", self.webView.class); // 输出应为WKWebView而非UIWebView
内容的提问来源于stack exchange,提问作者FamIos Developer
相关产品推荐
相关产品推荐

