You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多个含XCFramework二进制目标的Swift Package引发module.modulemap重复错误

问题:两个包含XCFramework的Swift Package导致module.modulemap冲突错误

我有两个Swift Package依赖,均包含XCFramework二进制目标。这两个XCFramework都具备以下内容:

  • .a 文件
  • 包含.h文件和module.modulemap文件的Headers文件夹

添加到项目后出现如下错误:

Multiple commands produce '/Users/../Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/include/module.modulemap'

Command: ProcessXCFramework /Users/omran/Library/Developer/Xcode/DerivedData/../SourcePackages/checkouts/zebrabarcodescanner/Sources/ZebraScannerSDK.xcframework /Users/omran/Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/libsymbolbt-sdk.a ios simulator

Command: ProcessXCFramework /Users/omran/Library/Developer/Xcode/DerivedData/../SourcePackages/checkouts/verifonesdk/Sources/VMF.xcframework /Users/omran/Library/Developer/Xcode/DerivedData/../Build/Products/Debug-iphonesimulator/VMF.a iOS simulator

这是Xcode的Bug吗?


这不是Xcode的Bug,而是两个XCFramework的modulemap配置存在路径冲突导致的。

Xcode处理XCFramework时,默认会将各框架的Headers内容合并到统一的include目录下,如果两个XCFramework都直接在Headers根目录放置module.modulemap,就会触发文件覆盖冲突。

解决方法

  1. 调整XCFramework的目录结构
    为每个XCFramework的Headers创建独立子目录,比如把ZebraScannerSDK的.h和module.modulemap放到Headers/ZebraScannerSDK目录下,VMF的放到Headers/VMF目录下,同时修改module.modulemap里的头文件引用路径,确保指向正确位置。

  2. 在Swift Package中显式配置头文件路径
    在Package.swift里为每个二进制目标指定publicHeadersPath,指向各自的子目录,避免Xcode将所有modulemap输出到同一个根include目录。示例配置:

.binaryTarget(
    name: "ZebraScannerSDK",
    path: "Sources/ZebraScannerSDK.xcframework",
    publicHeadersPath: "Headers/ZebraScannerSDK"
),
.binaryTarget(
    name: "VMF",
    path: "Sources/VMF.xcframework",
    publicHeadersPath: "Headers/VMF"
)

内容的提问来源于stack exchange,提问作者omranK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:35:04