Swift XCFramework编译报错:arm64架构下提示找不到Firebase模块
排查ABCSDK.xcframework导入时的Firebase模块缺失问题
错误信息
arm64-apple-ios.private.swiftinterface
arm64-apple-ios.private.swiftinterface:19:8 No such module 'Firebase'
Failed to build module ‘ABCSDK' for importation due to the errors above; the textual interface may be broken by project issues or a compiler bug
排查步骤
1. 检查ABCSDK的依赖打包逻辑
- 你的SDK私有接口文件(
.private.swiftinterface)明确引用了Firebase,说明SDK编译阶段依赖Firebase,但打包xcframework时未正确处理该依赖。仅移除客户端Pods的Firebase无意义,因为SDK本身需要这个模块才能正常解析接口。 - 确认SDK项目Build Settings:
- 设
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES为YES - 确保
FRAMEWORK_SEARCH_PATHS包含Firebase框架路径 - 若SDK静态依赖Firebase,需确认编译时已将Firebase符号静态链接到SDK中;若为动态依赖,客户端必须同步导入对应版本的Firebase框架。
- 设
2. 验证xcframework内部结构
- 执行终端命令查看xcframework的架构和内容:
xcrun xcframework info ABCSDK.xcframework - 检查输出是否包含Firebase相关模块或符号,若缺失则说明打包时遗漏了依赖,需重新归档SDK。
3. 调整客户端项目依赖配置
- 重新在客户端通过Pods引入Firebase,必须保证版本与SDK编译时使用的Firebase版本完全一致,避免版本不兼容导致模块找不到。
- 确认客户端项目的
FRAMEWORK_SEARCH_PATHS、HEADER_SEARCH_PATHS已包含Firebase路径,OTHER_SWIFT_FLAGS无冲突配置。
4. 处理Xcode 14.1特定问题
- 清理构建缓存:执行
Cmd+Shift+K清理项目,删除~/Library/Developer/Xcode/DerivedData目录下的对应项目缓存,重新构建。 - 确认SDK归档时的配置:必须使用Release配置,且
BUILD_LIBRARY_FOR_DISTRIBUTION设为YES,该选项会生成规范的.swiftinterface文件,避免接口损坏。
5. 重新打包xcframework
- 严格按照以下流程重新生成xcframework,确保依赖正确嵌入:
# 归档真机版本 xcodebuild archive -scheme ABCSDK -destination "generic/platform=iOS" -archivePath "./ABCSDK-iOS.xcarchive" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES # 归档模拟器版本 xcodebuild archive -scheme ABCSDK -destination "generic/platform=iOS Simulator" -archivePath "./ABCSDK-iOSSimulator.xcarchive" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES # 生成xcframework xcodebuild -create-xcframework -framework "./ABCSDK-iOS.xcarchive/Products/Library/Frameworks/ABCSDK.framework" -framework "./ABCSDK-iOSSimulator.xcarchive/Products/Library/Frameworks/ABCSDK.framework" -output "./ABCSDK.xcframework" - 打包完成后再次检查xcframework内部是否包含Firebase相关依赖符号。
内容的提问来源于stack exchange,提问作者Yuvaraj.M
相关产品推荐
相关产品推荐

