Xcode调试时出现非预期反模式与Swizzling日志问题排查
问题原因分析
- libRPAC.dylib是苹果官方用于远程推送资源压缩的系统动态库,近期Xcode或iOS SDK更新后,该库新增了对方法Swizzling、反模式代码的检测逻辑,默认开启调试日志输出
- 即便项目没主动用Swizzling,第三方依赖(比如推送SDK、统计类SDK)可能在底层用到相关技术,触发了该库的检测
- 调试环境下的部分Xcode配置(比如Zombie Objects、Runtime Sanitizer)可能间接激活了该库的日志输出
解决办法
- 关闭Xcode调试相关选项:
- 打开项目Scheme设置(Product > Scheme > Edit Scheme)
- 切换到
Run>Arguments标签,在Environment Variables里新增OS_ACTIVITY_MODE,值设为disable(提示:会关闭所有系统日志,按需使用) - 或者到
Diagnostics标签,取消勾选可能触发Runtime检测的选项(比如Malloc Stack、Zombie Objects等)
- 过滤Xcode日志:
- 在Console面板搜索框输入
NOT libRPAC.dylib,直接过滤掉该库的所有日志 - 或者点击Console右上角的过滤按钮,选择
Process,只显示项目进程的日志,排除系统库输出
- 在Console面板搜索框输入
- 排查第三方依赖:
- 用
pod deintegrate+pod install重新安装依赖,排查是否是依赖更新后引入了触发日志的代码 - 通过
pod outdated查看依赖版本,尝试回退到之前无日志的版本
- 用
- 修改Info.plist配置:
- 在项目的
Info.plist中添加OS_ACTIVITY_MODE键,值设为disable,全局关闭系统日志输出(注意:发布版本建议移除,避免影响系统日志收集)
- 在项目的
内容的提问来源于stack exchange,提问作者Johan van der Vleuten
相关产品推荐
相关产品推荐

