Expo React Native iOS Swift原生模块调试信息无法输出求助
Expo React Native Swift原生模块调试日志输出问题
问题描述
开发Expo React Native项目(SDK 50),iOS物理设备(iOS 16.0)上的Swift原生模块使用print()或OSLog输出调试信息,控制台和Apple Console均无法看到日志。
解决方案
1. 确认Xcode控制台的设备与进程选择
- 打开Xcode,在顶部工具栏的设备选择器中,选中你的物理测试设备
- 在进程列表里,找到你当前运行的Expo项目对应的App进程(不是Expo Go,是你自己的项目进程)
- 触发Swift模块的日志输出后,查看Xcode控制台
2. 调整OSLog的配置
- 给Logger指定模块标识符,方便日志过滤:
import OSLog private let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "NativeModule") logger.info("Logging test from Swift module")
- 在Apple Console中,搜索你设置的
category(比如"NativeModule")或App Bundle ID,即可定位到日志
3. 正确启动项目以转发日志
- 使用
npx expo run:ios命令启动项目,而非npx expo start(后者默认用Expo Go,原生模块日志不会转发到终端) - 启动后,终端会同时输出JS和原生日志,Swift的
print()内容会显示在这里
4. 验证代码执行路径
- 在日志输出代码前添加断言,确认Swift模块代码确实被执行:
assert(true, "Module code executed") print("Debug message after assertion")
5. 检查iOS设备日志权限
- 在物理设备的「设置」-「隐私与安全性」-「分析与改进」中,确保「共享iPhone分析」选项已开启(部分场景下该选项关闭会影响日志收集)
内容的提问来源于stack exchange,提问作者Tezzus
相关产品推荐
相关产品推荐

