创建包含opencv2.framework的foo.framework时module缺失,如何自动嵌入module文件夹?
解决方案:自动复制完整opencv2.framework到foo.framework内部
步骤1:打开foo.framework的构建项目
在Xcode中打开用于生成foo.framework的项目,选中对应target。
步骤2:添加Run Script构建阶段
- 切换到Build Phases标签页
- 点击左上角
+按钮,选择New Run Script Phase - 将该阶段拖拽到Embed Frameworks之后,确保在打包流程的后期执行复制操作
步骤3:编写复制脚本
在Run Script的输入框中粘贴以下脚本,根据你的项目路径调整变量值:
# 定义关键变量 FRAMEWORK_NAME="foo" EMBEDDED_FRAMEWORK="opencv2" # 目标framework路径(构建产物中的foo.framework) TARGET_FRAMEWORK="${BUILT_PRODUCTS_DIR}/${FRAMEWORK_NAME}.framework" # 原始完整opencv2.framework的路径(根据你的项目实际位置修改) SOURCE_FRAMEWORK="${PROJECT_DIR}/Frameworks/${EMBEDDED_FRAMEWORK}.framework" # foo.framework内部的目标路径 DEST_PATH="${TARGET_FRAMEWORK}/${EMBEDDED_FRAMEWORK}.framework" # 删除打包时自动嵌入的不完整opencv2.framework if [ -d "${DEST_PATH}" ]; then rm -rf "${DEST_PATH}" fi # 复制完整版本到目标位置 cp -R "${SOURCE_FRAMEWORK}" "${DEST_PATH}"
提示:如果用CocoaPods管理opencv2,
SOURCE_FRAMEWORK可改为${PODS_ROOT}/opencv2/opencv2.framework,具体路径以Pods实际安装位置为准。
步骤4:验证效果
- 执行清理(
Cmd+Shift+K)后重新构建项目(Cmd+B) - 打开构建产物中的foo.framework,检查内部是否包含完整的opencv2.framework(含module文件夹)
内容的提问来源于stack exchange,提问作者BrightRo99
相关产品推荐
相关产品推荐

