TIL:应对开发环境问题

在开发过程中,不可避免地需要对开发环境进行一些更改。 例如,更新Xcode,更新您的Cocoapods版本,集成新的依赖项。

它似乎常常很棒,例如……可能出什么问题了?!

然后突然间,您尝试运行您的项目,并且似乎无关的错误浮出水面,这些是您之前从未见过且不知道如何解决的。

当这些事情发生时,我有两个问题要问自己:

  1. 我该如何解决?
  2. 为什么会这样呢?

我的直觉通常是先回答第一个问题。 我只是不想再被阻止,我只想修复它并继续前进。

但是……我内心深处知道,后一个问题更为重要,也很难回答。

因此,例如,我遇到了很多错误,在这种情况下,我似乎能够解决一个错误,然后又出现另一个错误。

  • pods are integrated into targets that do not have the same Swift version
  • Duplicate interface definition for class 'Mixpanel'
  • ADiOSUtilities required by Vida (Swift 3.0), VidaTests (Swift 3.0.1), EarlGreyVidaTests (Swift 3.0ADiOSUtilities required by Vida (Swift 3.0), VidaTests (Swift 3.0.1), EarlGreyVidaTests (Swift 3.0

可能导致或未引起此更改的更改与以下更改相关,这些更改在几周的时间内由不同的开发人员合并:

  • 合并了新的库:Fastlane,EarlGrey
  • Cocoapods从1.0.1更新为1.2.0

解决方法:

  • 隔离错误,并一次解决一个。 例如,我意识到,当我切换到具有可可豆荚早期版本的其他分支时,我需要通过声明以下内容来指定可可豆荚的版本: pod _1.0.1_ install
  • 然后,重复的接口定义是因为我们在整个项目中以不同的方式声明了Mixpanel库-需要使每个文件之间保持一致。
  • 最后,我需要指定我们不需要使用传统的Swift语言
  • 最重要的是,每次构建时,我都删除了派生数据文件夹,清理了项目,并重置了模拟器。
    这就是数小时的车轮旋转的平凡细节…

我的主要收获:

我仍然没有弄清每个出现的问题的根本原因,但是我知道,当多个人对同一个环境进行更改时,可能会产生一系列负面影响。

我建议:

  • 一次更新一件事,并确保每个PR都独立于其他环境变化
  • 当您处于项目中间时,请勿更新环境或工具,请等到您处于自然的停顿点。 或者,制定一个商定的有机停止点。
  • 当您对项目进行更改以影响其他开发人员时,请确保他们知道即将发生的事情🙂

然后至少将头撞到墙上也会感觉不错: