Swift本地公共包添加Sentry依赖后归档报错:No such module 'Sentry'
解决方案:归档时公共包找不到Sentry模块的问题
核心问题定位
你的Package.swift中对Sentry依赖的产品名称配置错误:sentry-cocoa包对外暴露的模块名称是Sentry,而非包名sentry-cocoa,这会导致归档阶段依赖解析失败(本地构建可能因为缓存跳过了严格校验)。
具体修复步骤
1. 修正公共包的Package.swift
将targets中的依赖配置修改为:
.target( name: "CommonUtilities", dependencies: [ .product(name: "Sentry", package: "sentry-cocoa"), // 此处将sentry-cocoa修正为Sentry ], ),
保存后,在Xcode中执行File > Packages > Update to Latest Package Versions,确保依赖同步正确。
2. 检查主应用与watchOS扩展的依赖传递
- 若主项目通过Xcode项目管理:确认主应用和watchOS扩展的
Frameworks, Libraries, and Embedded Content中,不仅添加了Sentry,还确保CommonUtilities的依赖能正确拉取Sentry(Xcode通常自动处理,但归档时需手动确认)。 - 若主项目通过SPM管理:在主项目的
Package.swift中,确保CommonUtilities作为依赖被正确声明,且Sentry的依赖会被自动传递。
3. 统一归档构建配置
打开项目Build Settings,确保以下配置在**所有目标(包括公共包)**的Release归档配置中一致:
ENABLE_BITCODE:统一设置为YES或NO(Sentry 9.x+支持bitcode,建议保持全局一致)FRAMEWORK_SEARCH_PATHS:添加$(inherited),确保能找到Sentry框架路径OTHER_LDFLAGS:添加-framework Sentry,强制链接框架
4. 彻底清理缓存并重新构建
- 执行
Product > Clean Build Folder - 关闭Xcode,删除DerivedData目录:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新打开项目,直接尝试归档操作。
验证方法
修改完成后,先执行Product > Build For > Archiving预构建,确认无模块找不到的错误后,再正式执行归档。
内容的提问来源于stack exchange,提问作者Abion47
相关产品推荐
相关产品推荐

