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

使用xcodebuild打包静态库为XCFramework后,iOS应用报“No such module”

解决XCFramework导入报错“No such module 'M'”的方案

问题场景

我们有一个混合Swift和C代码的私有iOS静态库,目标是打包成XCFramework保护代码。通过xcodebuild命令打包成功,但导入测试应用后出现构建错误:No such module 'M'。

已执行的打包脚本:

xcodebuild archive -scheme M -archivePath  build/M-iphoneos.xcarchive -sdk iphoneos SKIP_INSTALL=NO 

xcodebuild -create-xcframework  -library M/Release-iphoneos/libStatic_lib_Swift_C.a  -output  build/M.xcframework

# 复制到测试应用目录
cp -R Build/M.xcframework         ../testApp/testApp  

已做尝试:

  • 将-create-xcframework的参数从-framework改为-library指定静态库文件
  • 配置了Framework和测试应用Build Settings中的搜索路径与导入路径

补充说明:静态库无对外暴露的.h文件,仅通过一个公开Swift函数提供能力,该函数内部调用C代码并通过inout参数返回结果。


解决步骤

1. 确认XCFramework的模块完整性

Swift静态库要被识别为模块,必须包含module.modulemap文件。打开M.xcframework,检查平台目录(如ios-arm64)下是否存在:

  • 静态库文件libStatic_lib_Swift_C.a
  • module.modulemap文件
  • Swift自动生成的头文件M-Swift.h

如果缺少module.modulemap,手动创建并放入平台目录,内容示例:

module M {
    header "M-Swift.h"
    export *
}

M-Swift.h可从归档产物的build/M-iphoneos.xcarchive/Products/Library/Headers目录获取。

2. 修正XCFramework打包命令

打包时必须同时指定静态库和对应的头文件/模块文件,正确命令格式如下:

xcodebuild -create-xcframework \
    -library build/M-iphoneos.xcarchive/Products/Library/Frameworks/M.framework/M \
    -headers build/M-iphoneos.xcarchive/Products/Library/Headers \
    -output build/M.xcframework

如果直接用编译后的静态库文件,要确保带上包含模块文件的目录:

xcodebuild -create-xcframework \
    -library M/Release-iphoneos/libStatic_lib_Swift_C.a \
    -headers M/Release-iphoneos/include \ # 存放module.modulemap和M-Swift.h的目录
    -output build/M.xcframework

3. 检查测试应用的导入配置

  • 把M.xcframework添加到测试应用的Frameworks, Libraries, and Embedded Content中,Embed选项设为Embed & Sign(或按需选Embed Without Signing)
  • 验证Build Settings里的Framework Search Paths,建议用$(SRCROOT)拼接相对路径,比如$(SRCROOT)/testApp/M.xcframework,确保路径正确
  • 确认Import Paths配置无误,或者直接在代码中import M时Xcode能索引到模块

4. 清理缓存重新构建

  • 用Cmd+Shift+K清理测试应用的构建缓存
  • 删除Xcode的DerivedData目录(路径:~/Library/Developer/Xcode/DerivedData)
  • 重新执行打包脚本,再导入测试应用重新构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:41