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

时间:2018-09-17 16:25:50

标签: ios git alamofire carthage

在我的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,因为它们在公关评论中引起了很大的反响。

似乎迦太基试图找到Alamofire 4.7.1,但由于某种原因而失败。到目前为止,我发现的唯一解决方法是将github "Alamofire/Alamofire" == 4.7.1包含在我的iOS应用程序的Cartfile中...,但我不明白为什么iOS应用程序本身需要理解其依赖项的依赖关系。

谢谢!

2 个答案:

答案 0 :(得分:3)

我最终要做的是在私有框架存储库中使用github "Alamofire/Alamofire" ~> 4.7,在iOS应用程序中使用github "Alamofire/Alamofire" "4.7.3"。现在一切正常。

我也有删除迦太基缓存的习惯–删除~/Library/Caches/org.carthage.CarthageKit/DerivedData内的目录

答案 1 :(得分:1)

iOS本身与添加到迦太基的依赖项无关。问题是您( carthage )在每个项目中使用的脚本。迦太基使用每个项目配置( cartfile ),并且必须满足要求。

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