iOS(或OS X)项目依赖于框架的两个版本



我正在编写一个快速框架,它依赖于Alamofire v3.x。现在我想将我的框架添加到一个依赖于 Alamofire v2.x 的项目中。我正在使用迦太基来管理我的项目。似乎不可能在一个项目中添加同一框架的两个版本。有没有办法解决这种情况?

你遇到的叫做依赖地狱。像.NET,Node等运行时已经解决了这个问题。Java,至少最多 8 个,只会选择它在运行时找到的第一个版本,并希望所有其他包都能使用它;他们没有。

CocoaPods 可以为您检测依赖地狱和pod install期间的错误,但仅此而已。我认为迦太基也是这样吗?然后,框架的用户就会在这里和那里降级依赖项,直到您的框架和其他依赖框架都使用相同版本的共享依赖项。截至目前,这仍然是我们AFAIK的唯一选择。

苹果确实通过框架版本控制解决了依赖地狱。框架将捆绑自身的多个版本,当链接到框架时,链接器将记录所需版本的完整路径(版本在路径中)。但是,一个捆绑了自己多个版本的框架过去和现在都是一个非常愚蠢的想法,因此从未起飞。

最新更新