在我的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/Build
和Carthage/Checkouts
,因为它们在公关评论中引起了很大的反响。
似乎迦太基试图找到Alamofire 4.7.1,但由于某种原因而失败。到目前为止,我发现的唯一解决方法是将github "Alamofire/Alamofire" == 4.7.1
包含在我的iOS应用程序的Cartfile中...,但我不明白为什么iOS应用程序本身需要理解其依赖项的依赖关系。
谢谢!
答案 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 ),并且必须满足要求。
因此,如果您想要同一个框架的不同版本(我根本不推荐它!这浪费了巨大的资源并延长了应用程序的午餐时间!并且可能导致副作用),应该将它们嵌入每个项目中。