我是iOS开发的新手,来自Android背景。我开始研究iOS中依赖管理的替代方案,发现CocoaPods似乎是最普遍的选择。
在阅读了很多关于这个主题的链接之后,我有点不知所措,想知道在iOS中处理依赖关系的常用方式是什么。
我有两个问题:
1)使用gradle生成库(.aar)项目相当于在iOS中使用什么?如果有任何等效选项。从我所见,可以将静态库和头文件包装到框架中,这些可以在其他应用程序中使用,这是标准的方法吗?
2)如果(1)是正确的,CocoaPods是否提供了一种机制来将框架作为依赖项添加?
答案 0 :(得分:4)
我没有Android背景,但根据我对.aar
文件的理解,CocoaPods做了非常相似的事情。 CocoaPods使用.podspec
个文件(描述为here)来生成static libraries(和soon动态框架,这些框架是iOS 8中的新功能),然后链接到您的项目中。
podspec
可以定义源供应商链接到您的应用程序的源文件,资产,库或框架。所以它确实支持添加框架作为依赖项,尽管在iOS上根本不支持iOS 8框架。
就“标准”方式而言,我认为这是基于意见。有一些通用的方法可以包含您可以选择的依赖项。
手动将文件,框架以及您需要的任何其他内容拖到项目中。更新这些更加困难,这也意味着您必须根据库所需的功能(例如ARC)来配置.xcodeproj
将提供的.xcodeproj
拖到项目中,并链接给定项目中的相关目标。如果库提供了可以构建框架或静态库的项目,这可能会很好,在这种情况下,您将引入该库,但它们的项目将处理自定义编译器标志。
执行上述任一操作,同时将其包含为git submodules。假设项目中没有任何重大变化,这对更新依赖项有很大帮助。
使用CocoaPods。 CocoaPods将根据semantic versioning(通常)处理所有自定义链接和更新。
使用Carthage。迦太基是CocoaPods和.xcodeproj
解决方案之间的中间人。它将根据git标签定义的语义版本下载代码,然后将生成的框架拖到项目中。
所有这些选项都有利有弊,决定通常取决于您对包含库的控制感觉,以及您希望它实现的自动化程度。
答案 1 :(得分:1)