Carthage: github 没有满足要求的可用版本(两个框架导入不同版本的Alamofire)

Carthage: No available version for github satisfies the requirement (two frameworks import Alamofire with different versions)

在我的 iOS 应用中,我尝试使用 Carthage 导入两个框架——这两个框架都依赖 Alamofire(但版本不同)。

当我 运行 carthage update --platform ios 我得到错误:

No available version for github "Alamofire/Alamofire" satisfies the requirement: == 4.7.1

在 iOS 应用程序的 Cartfile 中,我包含一个私有框架和 AlamofireImage:

git "ssh://git@<url>.com/<repo-name>.git" "<branch-name"
github "Alamofire/AlamofireImage" == 3.3.1

当我进行一些挖掘时,我看到 AlamofireImage 在 Cartfile 中有这个:

github "Alamofire/Alamofire" ~> 4.7

我的私人仓库有 github "Alamofire/Alamofire" == 4.7.1

注意:在我的私人仓库中,我的 .gitignore 文件中有 Carthage/BuildCarthage/Checkouts,因为它们在 PR 评论中引起了一堆噪音。

Carthage 似乎正在尝试寻找 Alamofire 4.7.1,但由于某种原因失败了。到目前为止我发现的唯一修复是在我的 iOS 应用程序的 Cartfile 中包含 github "Alamofire/Alamofire" == 4.7.1...但我不明白为什么 iOS 应用程序本身需要了解其依赖项依赖项。

谢谢!

iOS 本身与你在 carthage 添加的依赖无关。问题是您 (carthage) 用于每个项目的脚本。 Carthage使用每个项目配置(cartfile)并且它必须满足要求。

所以如果你想要同一个框架的不同版本(我根本不推荐它!它会浪费大量资源并大大延长应用程序的午餐时间!并且可能会导致副作用), 你应该将它们嵌入到每个项目中。

我最后做的是在我的私人框架仓库中使用 github "Alamofire/Alamofire" ~> 4.7 并在 iOS 应用程序中使用 github "Alamofire/Alamofire" "4.7.3"。现在一切正常。

我也养成了删除Carthage缓存的习惯——删除里面的目录~/Library/Caches/org.carthage.CarthageKit/DerivedData