M1 Mac运行旧Ionic/Cordova项目时WebKit框架报错原因排查
M1芯片Mac运行旧Cordova项目的WebKit框架错误问题
项目环境信息
Ionic: Ionic CLI : 6.20.1 (/usr/local/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 4.11.5 @angular-devkit/build-angular : 0.801.3 @angular-devkit/schematics : 8.1.3 @angular/cli : 8.1.3 @ionic/angular-toolkit : 2.1.1 Cordova: Cordova CLI : 11.0.0 Cordova Platforms : android 8.1.0, ios 6.2.0 Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 11 other plugins) Utility: cordova-res : 0.15.4 native-run : 1.7.1 System: Android SDK Tools : 26.1.1 (/Users/me/Library/Android/sdk) ios-deploy : 1.12.1 ios-sim : 8.0.2 NodeJS : v14.17.0 (/Users/me/.nvm/versions/node/v14.17.0/bin/node) npm : 6.14.13 OS : macOS Monterey Xcode : Xcode 14.2 Build version 14C18
报错信息
在Xcode中运行iOS 16.2的iPhone 14模拟器时,控制台报错:
2023-02-27 14:44:05.262840-0600 MyApp[25026:6489696] [assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=2 "Specified target process does not exist" UserInfo={NSLocalizedFailureReason=Specified target process does not exist}> 2023-02-27 14:44:05.262911-0600 MyApp[25026:6489696] [ProcessSuspension] 0x1520226a0 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'WebProcess Background Assertion' for process with PID=25049, error: Error Domain=RBSAssertionErrorDomain Code=2 "Specified target process does not exist" UserInfo={NSLocalizedFailureReason=Specified target process does not exist} 2023-02-27 14:44:05.267957-0600 MyApp[25026:6489397] [ProcessSuspension] ProcessAssertion::remainingRunTimeInSeconds failed to get handle for process with PID=25049 2023-02-27 14:44:35.251443-0600 MyApp[25026:6489397] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
已尝试的操作
- 将cordova-ios更新至6.2.0
- 确认Xcode项目设置无异常
- 重启模拟器
- 删除并重新安装模拟器上的应用
- 在其他模拟器上运行应用
问题
请问是什么原因导致这些WebKit框架相关错误?
原因分析及解决方案
核心原因
这些WebKit相关错误由多方面兼容性问题叠加导致:
- WebView插件版本滞后:
cordova-plugin-ionic-webview@5.0.0版本过旧,无法适配iOS 16.2和Xcode 14.2的WebKit进程管理机制,导致WebContent进程无法被正确识别和调度。 - M1芯片架构适配问题:旧版
ios-deploy、ios-sim未原生支持M1芯片,通过Rosetta运行时易出现进程通信异常,引发进程断言失败。 - CocoaPods依赖异常:编译阶段的Pods问题会导致WebKit相关组件初始化失败,间接触发后续的进程服务报错。
针对性解决步骤
升级WebView插件
移除旧插件并安装适配cordova-ios 6.x的最新稳定版:cordova plugin remove cordova-plugin-ionic-webview cordova plugin add cordova-plugin-ionic-webview@latest执行
cordova prepare ios同步依赖后重新编译。修复M1工具链适配
- 通过Homebrew安装原生适配M1的工具:
brew install ios-deploy ios-sim - 切换终端至Rosetta模式运行(右键终端→显示简介→勾选“使用Rosetta打开”),避免架构不兼容问题。
- 通过Homebrew安装原生适配M1的工具:
重建CocoaPods依赖
- 进入iOS平台目录清理旧依赖:
cd platforms/ios rm -rf Pods Podfile.lock pod install --repo-update - 返回项目根目录重新编译:
cordova clean ios && cordova build ios
- 进入iOS平台目录清理旧依赖:
调整Xcode项目架构设置
在Xcode的项目Build Settings中,将Architectures设置为Standard Architectures (arm64, x86_64),确保同时兼容M1和x86架构。
内容的提问来源于stack exchange,提问作者zeropsi
相关产品推荐
相关产品推荐

