含CocoaPods依赖的Umbrella Framework构建及导入问题求助
解决Umbrella Framework构建及导入问题的实操方案
1. 解决运行脚本时的磁盘I/O错误
- 排查脚本路径:确保脚本中涉及的项目路径、输出路径无空格或特殊字符,比如将项目迁移到
~/Desktop/ObjKnowFace_Proj这类简洁路径 - 修复文件夹权限:右键项目根文件夹,选择「显示简介」,确认当前用户拥有读写权限;也可通过终端执行
chmod -R 755 /你的项目完整路径批量修改权限 - 清理Xcode缓存:按下
Cmd+Shift+K清理项目,手动删除~/Library/Developer/Xcode/DerivedData下对应项目的缓存文件夹
2. 解决no such module 'Lottie'错误
- 核对Podfile配置:确保
GoogleMLKit/FaceDetection和lottie-ios都在Umbrella Framework的target块内,示例:
执行target 'ObjKnowFace' do use_frameworks! pod 'GoogleMLKit/FaceDetection' pod 'lottie-ios' endpod install后重新打开.xcworkspace文件 - 配置Umbrella Header:在
ObjKnowFace.h中添加#import <Lottie/Lottie.h>;如果框架包含Swift代码,需在桥接文件中导入该头文件 - 检查搜索路径:在框架项目的
Build Settings中,找到Framework Search Paths,添加$(PROJECT_DIR)/Pods/Lottie并设置为recursive
3. 解决导入其他项目时的模块构建失败问题
- 生成Fat Framework:确保导出的框架同时包含真机和模拟器架构,终端执行命令合并:
lipo -create ./build/Release-iphoneos/ObjKnowFace.framework/ObjKnowFace ./build/Release-iphonesimulator/ObjKnowFace.framework/ObjKnowFace -output ./ObjKnowFace.framework/ObjKnowFace - 正确导入目标项目:将框架拖入目标项目时勾选「Copy items if needed」,并在
Build Phases->Link Binary With Libraries中添加ObjKnowFace.framework - 调整目标项目Build Settings:
Framework Search Paths添加框架所在路径,设置为recursive- 将
Enable Modules (C and Objective-C)设为YES - 临时开启
Allow Non-modular Includes in Framework Modules为YES(若框架头文件存在非模块化导入时使用)
内容的提问来源于stack exchange,提问作者NaveedUlHassan5
相关产品推荐
相关产品推荐

