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