Xcode13+RN0.65.1在iOS15设备构建后报No bundle URL Present求助
问题根因排查
首先你日志中出现的com.apple.commcenter.coretelephony.xpc报错是iOS15版本的系统级警告,和你遇到的业务报错没有关联,可直接忽略。真正导致No bundle URL Present的原因是日志里的Could not connect to the server http://localhost:8081/status,也就是你的React Native应用无法连接到本地的Metro打包服务,无法获取js bundle资源。
可行解决方案
- 检查Metro服务状态
RN 0.65+版本在Xcode 13中经常出现自动拉起Metro服务失败的情况,你可以先在项目根目录手动执行yarn start或npm start,等待终端输出Metro running on http://localhost:8081的提示后,再在Xcode中重新运行项目即可。 - 配置http访问权限(针对iOS15+)
iOS15默认限制未加密的http请求访问,你需要打开iOS项目下的Info.plist文件,在NSAppTransportSecurity配置项下将NSAllowsArbitraryLoads的值设置为YES,也可以单独为localhost域名添加http访问例外。 - 真机运行适配
如果你使用的是实体iPhone12运行而非模拟器,应用默认访问的localhost指向手机本身而非开发电脑,你需要将项目中bundle加载的地址修改为开发电脑的局域网IP,同时保证手机和电脑连接同一WiFi,关闭电脑防火墙对8081端口的拦截。 - 清理缓存重试
如果以上操作都无效,可以依次执行缓存清理操作:- 关闭运行中的Metro终端,删除项目根目录下的
node_modules文件夹,重新执行yarn install安装依赖 - 进入ios目录执行
pod install更新iOS依赖 - 在Xcode中按
Shift+Command+K清理构建缓存,之后重新运行项目
- 关闭运行中的Metro终端,删除项目根目录下的
额外优化(可选)
如果你想过滤掉com.apple.commcenter.coretelephony.xpc这类无用的系统日志,可以在Xcode的Scheme配置中,选择Run->Arguments->Environment Variables,添加变量OS_ACTIVITY_MODE,值设置为disable即可。
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

