配置问题致AVCaptureSession启动后App崩溃锁屏求助
iOS相机扫码添加AVCaptureSession数据后崩溃(XPC connection interrupted)排查方案
权限配置检查
- 确认
Info.plist中已添加相机权限描述:NSCameraUsageDescription:必须填写明确的权限申请理由,不能为空或占位符- 若涉及扫码后访问照片,同步检查
NSPhotoLibraryAddUsageDescription/NSPhotoLibraryUsageDescription
- 验证权限申请流程:确保在初始化
AVCaptureSession前已请求相机权限,且用户授权后才启动会话
项目配置冲突排查
- Capabilities检查:
- 确认未开启与相机冲突的权限,比如
Screen Time限制、App Tracking Transparency配置异常 - 检查
Background Modes:若开启了不必要的后台模式(如后台音频),可能与相机会话抢占系统资源
- 确认未开启与相机冲突的权限,比如
- Build Settings对比:
- 对比新项目与现有项目的
Other Linker Flags,排查是否存在干扰AVFoundation的特殊标记 - 检查
Enable Bitcode状态:新项目默认多为关闭,现有项目若开启,尝试关闭后重新测试
- 对比新项目与现有项目的
- 第三方库冲突排查:
- 检查项目中是否有其他调用相机/AVFoundation的第三方SDK(如美颜、直播类SDK),这类库可能存在会话抢占或资源冲突
- 临时移除非必要第三方库,逐步排查冲突源
代码细节验证
尽管代码在新项目正常运行,仍需确认现有项目中的执行细节:
- 确保
AVCaptureSession的初始化、配置、启动操作都在主线程执行(AVFoundation部分API强制要求主线程操作) - 检查会话停止/释放逻辑:是否存在重复添加输入输出、未正确停止会话就释放实例的情况
- 验证
AVCaptureSession的预设分辨率:部分旧设备不支持高分辨率预设,可尝试切换为AVCaptureSessionPresetMedium测试
日志与系统层面排查
- 除
XPC connection interrupted外,通过以下方式获取更详细日志:- 连接Xcode,开启
Debug > Debug Workflow > View Memory Graph Hierarchy,查看崩溃时的内存泄漏或野指针情况 - 在Mac的
Console应用中过滤AVFoundation相关日志,可能会得到权限拒绝、资源不可用等具体错误信息
- 连接Xcode,开启
- 测试不同设备:若仅在特定设备/系统版本崩溃,需排查iOS版本兼容性(比如iOS 16+的相机权限逻辑有调整)
若能补充以下信息,可进一步缩小排查范围:
- 现有项目的iOS部署目标版本
Info.plist中权限相关的完整配置- 相机扫码模块的完整代码片段(尤其是会话初始化、添加输入输出的部分)
内容的提问来源于stack exchange,提问作者Yupi
相关产品推荐
相关产品推荐

