如何解决Xcode中Safari扩展Target无法引入Swift Package的问题?
解决Safari Extension Target无法导入CommonPackage的问题
核心原因分析
你的Swift Package仅指定了.iOS(.v14)平台支持,但Safari Extension Target可能运行在跨平台环境(比如同时兼容iOS和macOS),或是Extension的部署平台未被Package覆盖,导致模块无法被识别。此外也可能存在依赖关联未同步的情况。
分步解决方案
1. 扩展Package的平台支持范围
修改Package.swift中的platforms配置,添加Safari Extension Target对应的平台版本。例如如果你的Extension支持iOS 14+和macOS 11+,更新后的配置如下:
let package = Package( name: "CommonPackage", platforms: [ .iOS(.v14), .macOS(.v11) // 根据你的Extension实际部署版本调整 ], products: [ .library( name: "CommonPackage", targets: ["CommonPackage"]), ], dependencies: [], targets: [ .target( name: "CommonPackage", dependencies: []), .testTarget( name: "CommonPackage Tests", dependencies: ["CommonPackage"]), ] )
2. 重新同步Package依赖
- 在Xcode中执行
File > Packages > Update to Latest Package Versions,让Xcode重新识别Package的平台配置变更。 - 按下
Cmd + Shift + K清理构建文件夹,随后重新构建整个项目。
3. 验证Extension Target的依赖配置
- 选中Safari Extension Target,进入
General > Frameworks, Libraries, and Embedded Content面板。 - 确认
CommonPackage已被添加,且嵌入方式设置为Do Not Embed(Swift Package库无需手动嵌入,Xcode会自动处理关联)。
4. 检查版本匹配(可选)
如果你的Extension是iOS专属,确认其Deployment Target版本不低于iOS 14,与Package的平台要求保持一致,避免版本不匹配导致的模块识别失败。
内容的提问来源于stack exchange,提问作者Teja Nandamuri
相关产品推荐
相关产品推荐

