You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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相关错误由多方面兼容性问题叠加导致:

  1. WebView插件版本滞后:cordova-plugin-ionic-webview@5.0.0版本过旧,无法适配iOS 16.2和Xcode 14.2的WebKit进程管理机制,导致WebContent进程无法被正确识别和调度。
  2. M1芯片架构适配问题:旧版ios-deploy、ios-sim未原生支持M1芯片,通过Rosetta运行时易出现进程通信异常,引发进程断言失败。
  3. CocoaPods依赖异常:编译阶段的Pods问题会导致WebKit相关组件初始化失败,间接触发后续的进程服务报错。

针对性解决步骤

  1. 升级WebView插件
    移除旧插件并安装适配cordova-ios 6.x的最新稳定版:

    cordova plugin remove cordova-plugin-ionic-webview
    cordova plugin add cordova-plugin-ionic-webview@latest
    

    执行cordova prepare ios同步依赖后重新编译。

  2. 修复M1工具链适配

    • 通过Homebrew安装原生适配M1的工具:
      brew install ios-deploy ios-sim
      
    • 切换终端至Rosetta模式运行(右键终端→显示简介→勾选“使用Rosetta打开”),避免架构不兼容问题。
  3. 重建CocoaPods依赖

    • 进入iOS平台目录清理旧依赖:
      cd platforms/ios
      rm -rf Pods Podfile.lock
      pod install --repo-update
      
    • 返回项目根目录重新编译:
      cordova clean ios && cordova build ios
      
  4. 调整Xcode项目架构设置
    在Xcode的项目Build Settings中,将Architectures设置为Standard Architectures (arm64, x86_64),确保同时兼容M1和x86架构。

内容的提问来源于stack exchange,提问作者zeropsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:17:51