React Native 0.64在XCode运行时出现sharedApplication is not available错误求助
原因分析
React Native 0.64的核心库部分模块(如RCTLinkingManager、RCTPushNotificationManager)仍在使用[UIApplication sharedApplication]这个被高版本iOS SDK标记为受限/废弃的API,当用Xcode 13及以上版本编译时就会触发该错误。
修复方案
方案1:修改RN原生代码适配API
如果报错来自RN核心库,推荐用patch包修改:
- 安装
patch-package工具:npm install patch-package --save-dev - 找到
node_modules/react-native/Libraries/LinkingIOS/RCTLinkingManager.m(或对应报错文件),将[UIApplication sharedApplication]的调用替换为兼容写法:UIApplication *application = [UIApplication sharedApplication]; if ([application respondsToSelector:@selector(openURL:options:completionHandler:)]) { [application openURL:url options:options completionHandler:completion]; } else { [application openURL:url]; } - 生成并保存patch文件:
npx patch-package react-native - 将生成的
patches/react-native+0.64.x.patch提交到版本控制,其他开发者安装依赖后执行npx patch-package即可应用修复。
方案2:临时绕过编译错误
若暂时无法修改代码,可调整Xcode编译设置:
- 打开Xcode项目,选中目标应用
- 进入
Build Settings,搜索Other C Flags - 添加
-Wno-error=deprecated-declarations,将废弃API的警告转为非错误,允许编译通过
注意:此为临时方案,仅用于紧急调试,不建议长期使用
方案3:升级React Native版本(可选)
如果项目允许,升级到React Native 0.65及以上版本,这些版本已适配iOS SDK的API变更,移除了对sharedApplication的不安全调用。
内容的提问来源于stack exchange,提问作者S.Hashmi
相关产品推荐
相关产品推荐

