Skip to content

iOS 常见问题

集成问题

Q: 引擎创建失败怎么办?

A: 检查以下几点:

  • 确认 appIdappKey 是否正确
  • 检查网络连接是否正常
  • 查看日志输出获取详细错误信息
  • 确认 SDK 版本是否最新
  • 检查 Framework 是否正确链接

Q: 编译时找不到头文件或类?

A: 可能的原因:

  • 确认已正确添加 Facebetter.framework 到项目
  • 检查 Framework 的 "Embed & Sign" 设置是否正确
  • 确认导入语句:#import <Facebetter/FBBeautyEffectEngine.h>
  • 尝试 Clean Build Folder 后重新构建

Q: 运行时出现链接错误?

A: 解决方案:

  • 确认设备架构是否支持(arm64, armv7)
  • 检查 Framework 文件是否完整
  • 确认 Framework 的部署目标设置正确
  • 检查是否有其他 Framework 冲突

功能问题

Q: 美颜效果不明显?

A: 可以尝试:

  • 增加美颜参数值(范围 0.0-1.0)
  • 确保启用了对应的美颜类型
  • 检查图像质量是否足够清晰
  • 确认人脸检测是否正常

Q: 美颜效果过度或失真?

A: 建议:

  • 降低美颜参数值
  • 检查参数组合是否合理
  • 避免同时启用过多美颜类型
  • 根据图像质量调整参数

Q: 虚拟背景不生效?

A: 检查:

  • 确认已启用 FBBeautyType_VirtualBackground
  • 检查背景图片路径是否正确
  • 确认图片格式是否支持(PNG、JPG)
  • 检查图片文件是否存在且可读

性能问题

Q: 处理速度慢怎么办?

A: 优化建议:

  • 使用 FBProcessModeVideo 进行实时处理
  • 降低图像分辨率
  • 减少同时启用的美颜类型
  • 避免在主线程进行图像处理
  • 使用多线程处理图像

Q: 内存占用过高?

A: 解决方案:

  • 及时释放 FBImageFrameFBImageBuffer 对象
  • 避免频繁创建和销毁引擎实例
  • 复用 FBImageFrame 对象
  • 使用对象池模式管理图像缓冲区

Q: 应用崩溃或卡顿?

A: 排查步骤:

  • 检查是否在主线程进行图像处理
  • 确认资源释放是否完整
  • 查看日志中的异常信息
  • 检查参数值是否在有效范围内
  • 使用 Instruments 工具分析内存和性能

图像处理问题

Q: 如何处理不同格式的图像?

A: 使用 FBImageFrame 的格式转换方法:

  • toRGBA - 转换为 RGBA 格式
  • toI420 - 转换为 I420 格式
  • toNV12 - 转换为 NV12 格式
  • toBGRA - 转换为 BGRA 格式

Q: 相机预览图像处理?

A: 建议流程:

  1. 从 AVCaptureSession 获取 CVPixelBuffer
  2. 使用 createWithData 创建 FBImageFrame
  3. 调用 processImage 处理
  4. 转换为目标格式显示

Q: 图像旋转问题?

A: 解决方案:

  • 使用 FBImageFramerotate 方法旋转图像
  • 支持 0°、90°、180°、270° 旋转
  • 旋转操作会修改原始图像数据

权限问题

Q: 相机权限问题?

A: 需要添加权限描述:

xml
<key>NSCameraUsageDescription</key>
<string>需要相机权限进行美颜拍照</string>

Q: 相册权限问题?

A: 需要添加权限描述:

xml
<key>NSPhotoLibraryUsageDescription</key>
<string>需要相册权限选择照片进行美颜</string>

调试问题

Q: 如何开启调试日志?

A: 在创建引擎前配置:

objc
FBLogConfig *logConfig = [[FBLogConfig alloc] init];
logConfig.consoleEnabled = YES;
logConfig.fileEnabled = YES;
logConfig.level = FBLogLevel_Debug;
[FBBeautyEffectEngine setLogConfig:logConfig];

Q: 如何获取详细错误信息?

A: 方法:

  • 开启 DEBUG 级别日志
  • 检查 API 返回值(0 表示成功)
  • 查看文件日志输出
  • 使用 Xcode 的 Console 查看日志

版本兼容性

Q: 支持哪些 iOS 版本?

A: 支持 iOS 10.0 及以上版本

Q: 支持哪些设备架构?

A: 支持:

  • arm64(64位设备)
  • armv7(32位设备,iOS 10.0+)

Q: 如何升级 SDK 版本?

A: 步骤:

  1. 下载新版本 SDK
  2. 替换旧的 Framework 文件
  3. 清理项目缓存
  4. 重新构建项目
  5. 测试功能是否正常

ARC 相关问题

Q: 如何处理内存管理?

A: iOS 使用 ARC,但需要注意:

  • 及时将对象设置为 nil
  • 避免循环引用
  • 使用 weak 引用避免强引用循环

Q: 如何处理 CVPixelBuffer?

A: 建议:

  • 使用 CVPixelBufferRetainCVPixelBufferRelease 管理
  • 或者使用 __bridge_transfer__bridge_retained 转换

多线程问题

Q: 如何在后台线程处理图像?

A: 建议:

  • 使用 dispatch_async 在后台队列处理
  • 避免在主线程进行图像处理
  • 使用 dispatch_async(dispatch_get_main_queue()) 更新 UI

Q: 如何处理并发访问?

A: 解决方案:

  • 使用 @synchronized 保护共享资源
  • 使用串行队列处理图像
  • 避免多线程同时访问引擎实例

部署问题

Q: App Store 审核被拒?

A: 可能原因:

  • 缺少必要的权限描述
  • 使用了私有 API
  • 内存泄漏问题
  • 崩溃问题

Q: 如何优化 App 大小?

A: 建议:

  • 移除未使用的架构(如 armv7)
  • 压缩资源文件
  • 使用 App Thinning
  • 移除未使用的 Framework 部分