用于iOS开发的CocoaPods的五个杀手级功能正在开发中

请参阅原始链接以获得良好的图形和完整内容

用于iOS开发的CocoaPods的五个杀手级功能正在开发中
到目前为止,CocoaPods一直是iOS开发人员的神奇依赖管理器。 很少有开发人员了解会发生什么…… shashikantjagtap.net 用于iOS开发的CocoaPods的五个杀手级功能正在开发中– XCTEQ
到目前为止,CocoaPods一直是iOS开发人员的神奇依赖管理器。 很少有开发人员了解会发生什么…… www.xcteq.co.uk

到目前为止,CocoaPods一直是iOS开发人员的神奇依赖管理器。 很少有开发人员在运行pod install命令时了解幕后情况。 但是,事实证明,CocoaPods在iOS生态系统中是无痛的依赖管理器。 就我个人而言,我与CocoaPods有爱恨交织的关系,所以我写了一篇博客文章CocoaPods Or Carthage-这是比较两个非常流行的iOS依赖管理系统的问题。 CocoaPods刚刚宣布了1.7.0 beta版,其中包含许多很棒的功能,这些使我感到高兴。 您可以在此处在CocoaPods博客上阅读所有公告。 宣布了一些杀手级功能,可以显着减少构建时间,并更好地控制iOS项目。 让我们简要地探讨这五个即将推出的功能。

如何获得新的CocoaPods

在进入CocoaPods 1.7.0 beta的闪亮新功能之前,我们需要升级CocoaPods的版本。 您可以通过运行以下命令来使用Ruby gem获得预发行版本。

  $ gem install cocoapods -v 1.7.0.beta.1 
要么
$ gem install cocoapods --pre

安装成功后,您将获得最新的CocoaPods功能。 如果您不使用Ruby版本管理器,则可能需要使用sudo。 现在,您将拥有最新版本的Cocoapods的所有功能。 我创建了一个示例Github存储库,以使用此新的闪亮功能。 在Github上查看PodNews。

CocoaPods 1.7.0

让我们探索CocoaPods 1.7.0的所有闪亮功能。

1]增量安装

原因之一,我非常讨厌CocoaPods,因为它从头开始构建所有依赖的框架以进行干净的构建。 这会花费很多时间,并且构建时间会增加很多,尤其是如果您不执行增量构建。 在云CI服务上,它们通常为每个构建都创建新的VM,并且CocoaPods从头开始构建所有框架,除非您对其进行缓存。

增量安装的杀手级功能解决了这个问题,通过增量安装,CocoaPods仅重新生成自上一个pod install命令以来已更改的目标。 我们可以通过将此代码添加到Podfile来启用此功能

 安装!  'cocoapods', 
:incremental_installation => true

现在,每次运行pod install时,只会构建更改的框架。 在CI上,我们仍然需要缓存依赖项,但这是一个很大的改进,它将节省开发人员的时间。

好处:更快的构建和开发人员的生产力。

2]支持多个Swift版本和Pod项目

Swift是一种不断发展的编程语言。 新版本的Swift会时不时地登陆,并且库作者必须使他们的项目保持最新的Swift版本。 您可能经常看到此错误

 使用swift 4.0编译的模块无法在swift 4.2中导入 

当依赖项模块不是最新的Swift时,通常会导致此错误。 现在,您不必担心,作为库作者,您可以在Podspec文件中指定多个Swift版本。

  Pod :: Spec.new do | s | 
s.name ='PodNews'
s.version ='0.1.0'
#新======================
s.swift_versions = ['3.2','4.0','4.2']
结束

现在,Swift 3.2、4.0和4.2可以支持PodNews库。 该库的所有用户还可以在目标中提及受支持的Swift版本。

 目标'PodNews_Example'做 
support_swift_versions'> = 3.0','<4.2'
pod'PodNews'
结束

support_swift_versions DSL也可以在Podfile的根级别声明。

现在,库的作者和库的用户不必急于支持最新的Swift版本。 另一个功能是Cocoapods现在可以生成多个Pod项目。 我们可以从Podfile启用该功能

 安装!  'cocoapods', 
:generate_multiple_pod_projects =>是,

好处:多种Swift版本支持使库开发人员的工作变得轻松自如。

3]定义示例应用的应用规范

CocoaPods已经宣布了对测试规范的支持,但现在已经扩展到了应用规范。 应用规范将是向用户展示该示例应用库的工作原理的好方法。 作者可以在Podspec文件中将App规范定义为

  #新====================== 
s.app_spec'示例'| app_spec |
app_spec.source_files ='示例/PodNews/*.swift'
结束

该库的用户可以选择通过以下方式定义目标库和应用规范来使用应用规范:

 目标'PodNews_Example'做 
#新======================
pod'PodNews',:path =>'../',:appspecs => ['Example']
结束

BenefitL App规范可以使您的库更加轻巧。

4]动态方案启动参数/环境

CocoaPods将为您提供一个选项,以将启动参数和启动环境传递给测试规范。 方案将自动将此变量用于方案中的运行操作。 在Podspec中,作者可以将其定义为

  s.test_spec'测试'做| test_spec | 
test_spec.source_files ='示例/测试/**/*.swift'
test_spec.scheme = {
:launch_arguments => ['Quick','XCTest'],
:environment_variables => {'XCTest'=>'false'}
}
结束

我们可以定义适用于特定平台的变量,例如iOS,唯一的方案可以在Podspec中定义为test_spec.ios.scheme。

好处:此功能可用于运行具有不同配置的测试。

5]自动生成.xcfilelist

当“运行脚本”阶段的输入和输出路径增加时,Apple宣布支持.xcfilelist文件。 我们可以创建一个单独的文件并将其添加到此处。 CocoaPods将自动检测是否需要创建文件,并相应地生成“运行脚本”阶段。

好处:可用于轻松复制构建配置

源代码

Github上的示例源代码:PodNews

结论

这些惊人的功能使CocoaPods变得非常强大。 这项新功能将大大减少构建时间,并且库作者在创建新库或SDK时将拥有很大的自由度。 希望您在发布稳定版本后立即尝试这些功能! 做得好的CocoaPods团队!

===================================

像XCBlog的XCTEQ发布的帖子一样? 您可能还会喜欢我们在 Github 上的一些开源项目, 或者在 Twitter LinkedIn 上关注我们