React Native CLI项目iOS模拟器报错:无法创建Promise及Bundle ID不匹配
React Native iOS模拟器启动报错排查
问题现象
运行基于React Native CLI构建的iOS项目时,模拟器弹出提示:
Simulator device returned an error for the requested operation. Failed to create promise.
点击「详情」后,终端显示核心错误信息:
Details Simulator device returned an error for the requested operation. Domain: IXErrorDomain Code: 2 Failure Reason: Failed to create promise. User Info: { DVTErrorCreationDateKey = "2023-04-23 06:42:07 +0000"; FunctionName = "+[IXPlaceholder _placeholderForBundle:client:withParent:installType:metadata:placeholderType:mayBeDeltaPackage:error:]"; IDERunOperationFailingWorker = IDELaunchiPhoneSimulatorLauncher; SimCallingSelector = "installApplication:withOptions:error:"; SourceFileLine = 884; } -- Failed to set app extension placeholders for com.companyname.[applicationname] Domain: IXErrorDomain Code: 2 Failure Reason: Failed to create promise. User Info: { FunctionName = "+[IXPlaceholder _placeholderForBundle:client:withParent:installType:metadata:placeholderType:mayBeDeltaPackage:error:]"; SourceFileLine = 884; } -- Attempted to set app extension placeholder promise with bundle ID ccom.companyname.[applicationname] that does not match required prefix of com.companyname.[applicationname]. for parent Domain: IXErrorDomain Code: 8 Failure Reason: Mismatched bundle IDs. User Info: { FunctionName = "-[IXPlaceholder setAppExtensionPlaceholderPromises:error:]"; SourceFileLine = 1392; } -- ... -- System Information macOS Version 13.3.1 (Build 22E261) Xcode 14.3 (21812) (Build 14E222b) Timestamp: 2023-04-23T07:42:07+01:00
错误原因
从日志核心提示可明确:
- 应用扩展的Bundle ID多了一个多余前缀
c,变成ccom.companyname.[applicationname],与父应用Bundle IDcom.companyname.[applicationname]的前缀要求不匹配 - iOS规定应用扩展的Bundle ID必须是父应用Bundle ID的子ID格式(如父应用为
com.xxx.app,扩展需为com.xxx.app.extension),当前格式不合法导致安装失败
解决方法
- 修正Bundle ID配置:
- 打开iOS项目中主应用和所有应用扩展的
Info.plist文件 - 修改
CFBundleIdentifier字段,确保扩展的Bundle ID以父应用ID为前缀(比如父应用是com.companyname.[applicationname],扩展应为com.companyname.[applicationname].xxx,xxx为扩展标识如share、widget等),去掉多余的c
- 打开iOS项目中主应用和所有应用扩展的
- 同步Xcode项目配置:
打开Xcode选中项目目标(Targets),进入「Signing & Capabilities」标签页,确认主应用和所有扩展的「Bundle Identifier」与Info.plist配置一致 - 清理缓存并重建:
- 执行
cd ios && pod install重新安装依赖 - 在Xcode中按
Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K清理构建文件夹
- 执行
- 重启模拟器:
关闭当前模拟器,通过Xcode的「Window > Devices and Simulators」删除已安装的应用,再重新启动项目
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

