Swift Package Manager中.package(name:url:)弃用后的报错解决
解决Swift包中Lottie依赖的弃用警告与产品找不到错误
问题本质
带name参数的.package(name:url:from:)语法已被Swift Package Manager废弃,移除name参数后出现产品找不到的错误,核心原因是你引用的Lottie仓库的实际包名和目标依赖中指定的包名不匹配。
分步解决
1. 修正依赖声明
首先更新Package.swift中的依赖声明,移除弃用的name参数。注意:你之前用的lottie-spm.git是Airbnb早期的专用SPM仓库,现在官方主仓库已原生支持SPM,更推荐使用主仓库地址:
// 推荐:使用Lottie官方主仓库 .package(url: "https://github.com/airbnb/lottie-ios.git", from: "4.5.0")
如果坚持使用原仓库,保留原URL即可:
// 兼容原仓库的写法 .package(url: "https://github.com/airbnb/lottie-spm.git", from: "4.5.0")
2. 匹配目标依赖的包名
在你的MyPackage目标的依赖配置中,package参数必须和你引入的仓库的实际包名完全一致:
- 若使用官方主仓库,包名是
lottie-ios:
.target( name: "MyPackage", dependencies: [ .product(name: "Lottie", package: "lottie-ios") ] ),
- 若使用原
lottie-spm仓库,包名是lottie-spm:
.target( name: "MyPackage", dependencies: [ .product(name: "Lottie", package: "lottie-spm") ] ),
之前的错误就是因为你可能仍在使用旧的自定义包名Lottie,而非仓库实际的包名。
3. 清理缓存重构建
缓存可能导致依赖识别异常,执行以下命令重置:
swift package clean swift package update swift build
排查要点
如果仍有问题,检查:
- 仓库地址是否可正常访问,版本号
4.5.0是否在仓库的已发布标签中 - 目标依赖中的
package参数是否区分大小写(Swift包名是区分大小写的) - Xcode是否已刷新依赖(可手动点击Xcode顶部菜单
File > Packages > Resolve Package Versions)
内容的提问来源于stack exchange,提问作者poGUIst
相关产品推荐
相关产品推荐

