Swift学习WebSocket时遇Package版本不匹配问题求助
Swift Package依赖iOS最低版本不匹配问题排查与解决
问题场景
学习Swift WebSocket技术时,参考教程构建起始项目,遭遇两个依赖包的平台版本兼容错误:
- SQLiteKit相关错误:
The package product 'SQLiteNIO' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
- Vapor相关错误:
The package product 'Crypto' requires minimum platform version 13.0 for the iOS platform, but this target supports 11.0
初始Package.swift平台配置:
name: "websocket-backend", platforms: [ .macOS(.v10_15) ],
手动添加iOS平台配置后错误依然存在:
platforms: [ .macOS(.v10_15), .iOS(.v13) ],
解决步骤
1. 为每个Target单独指定平台版本
Package根层级的平台配置不会自动覆盖Target的默认设置,需要给项目的每个Target(包括测试Target)明确指定最低平台版本:
let package = Package( name: "websocket-backend", platforms: [ .macOS(.v10_15), .iOS(.v13) ], dependencies: [ // 你的依赖声明 ], targets: [ .target( name: "websocket-backend", platforms: [.iOS(.v13), .macOS(.v10_15)] ), .testTarget( name: "websocket-backendTests", dependencies: ["websocket-backend"], platforms: [.iOS(.v13), .macOS(.v10_15)] ) ] )
2. 锁定依赖包兼容版本
如果更新Target配置后仍报错,可能是依赖包版本过新,可尝试指定支持iOS 13+的稳定版本:
dependencies: [ .package(url: "https://github.com/vapor/sqlite-kit.git", from: "4.26.0"), .package(url: "https://github.com/vapor/vapor.git", from: "4.83.0") ]
(注:版本号可根据实际兼容情况调整)
3. 清理缓存重新解析依赖
执行以下命令清理缓存并重新拉取依赖:
swift package clean swift package resolve
若使用Xcode,可通过File > Packages > Reset Package Caches和File > Packages > Resolve Package Versions操作。
内容的提问来源于stack exchange,提问作者S. S. Saruar Jahan
相关产品推荐
相关产品推荐

