一次 Swift2.3 项目的维护经历

起源于 Swift2.3 的老项目,本来已经说好不维护了,也不修改代码了。但是他使用的是企业证书发布的,而企业证书的有效期是一年,到期之后,即使是已经安装的 App 也无法打开。所以我只能用新的证书重新编译再打包一个。

但是我电脑上只有 Xcode 9.1,无法直接自动转换 Swift 2.3 的项目,必须要使用 Xcode 8.3 来转换到 Swift 3,然后再更新到最新的 Swift 4。虽然这样很折腾,但是我想想 Xcode 的转换工具能完成大部分工作,我应该也就个把小时的工作量吧。实时证明我太天真了,转换之后还是有大量需要手工重写的代码。除了自己的之外,还有很多第三方库也适应到新的写法导致了很多地方的方法调用都得重写。

在折腾了半天之后,我还是放弃了,准备直接使用老版本的 Xcode (8.3 以前的版本),来编译。但是再安装 Xcode 8.2.1 的时候又出现了验证失败的问题,Xcode 8.2 同样有这个问题。通过

pkgutil --check-signature Xcode8.2.1.xip

验证签名都是不匹配的,无法理解为什么在 Apple Developer 下载的 Xcode 居然会无法完成验证。

然后又想通过

xattr -d com.apple.quarantine Xcode8.2.1.xip

去掉签名后再打开,仍然是显示验证失败。

最后只能安装了 Xcode 8.1 (幸好这个是可以正确的安装的)。然后更新证书,编译打包都顺利完成了。

我想说的是 Swift 2.3 只是我在一年多前还在使用着的语言,如果这个项目没有更新 XcodeSwift 进化的话,那在有一天突然要更新到最新版实在是一件太可怕的工作。

对于开发者来说,我们总是被先进的编程语言,编程框架所吸引,一直以来我都是在自己当时的项目中尽可能使用新的东西,这也是完成工作的一种动力。但是最近几年,你会发现在技术圈中(不只是 Swift, Javascript 也是),每天都会有新的东西出现。而我们程序员又如此爱折腾,真的无法拒绝这些诱惑。即使到现在我也无法克制对新技术的盲目推崇。但是看看这次的经历,一个不算很久不维护的项目就已经进入难以更新的境地,我以后不得不提醒自己,在为这个项目选择工具的时候,他真的能为后面的工作带来便利吗?

有的时候我真怀念写 c 或者 python 的瞬间,只要一个 vim 编辑器,在任意一台 MacOS, Linux 上就可以快乐的写程序。野心勃勃而又越来越庞大的 Swift,不知道什么时候才能有这一天呢。

分享到:

上一篇

20171110 一整天都在和 YouCompleteMe 较劲

有的时候时间不是被玩掉的

阅读更多文章