iOS 常见问题
集成问题
Q: 引擎创建失败怎么办?
A: 检查以下几点:
- 确认
appId和appKey是否正确 - 检查网络连接是否正常
- 查看日志输出获取详细错误信息
- 确认 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: 解决方案:
- 及时释放
FBImageFrame和FBImageBuffer对象 - 避免频繁创建和销毁引擎实例
- 复用
FBImageFrame对象 - 使用对象池模式管理图像缓冲区
Q: 应用崩溃或卡顿?
A: 排查步骤:
- 检查是否在主线程进行图像处理
- 确认资源释放是否完整
- 查看日志中的异常信息
- 检查参数值是否在有效范围内
- 使用 Instruments 工具分析内存和性能
图像处理问题
Q: 如何处理不同格式的图像?
A: 使用 FBImageFrame 的格式转换方法:
toRGBA- 转换为 RGBA 格式toI420- 转换为 I420 格式toNV12- 转换为 NV12 格式toBGRA- 转换为 BGRA 格式
Q: 相机预览图像处理?
A: 建议流程:
- 从 AVCaptureSession 获取 CVPixelBuffer
- 使用
createWithData创建 FBImageFrame - 调用
processImage处理 - 转换为目标格式显示
Q: 图像旋转问题?
A: 解决方案:
- 使用
FBImageFrame的rotate方法旋转图像 - 支持 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: 步骤:
- 下载新版本 SDK
- 替换旧的 Framework 文件
- 清理项目缓存
- 重新构建项目
- 测试功能是否正常
ARC 相关问题
Q: 如何处理内存管理?
A: iOS 使用 ARC,但需要注意:
- 及时将对象设置为 nil
- 避免循环引用
- 使用 weak 引用避免强引用循环
Q: 如何处理 CVPixelBuffer?
A: 建议:
- 使用
CVPixelBufferRetain和CVPixelBufferRelease管理 - 或者使用
__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 部分