cocoapods安装_如何让cocoapods支持Legacy Build System

最近在基于cocoapods做SDK开发,到了版本发布日遇到了个问题。版本发布时,需要将podspec文件推送到cocoapods官方仓库中,在推送的时候报错,校验不通过。

网上很多cocoapods库开发教程,本文不再赘述,只单纯描述一下遇到的问题。

首先执行 pod trunk push **.podspec --allow-warnings --use-libraries --verbose,突然报错,提示如下图

d8557af127fb29db8d9c0c5956c19662.png

这是一个很经典的错误。在日常开发过程中,xcode10经常会出现这个错误,其原因是xcode10采用了New Build System,之前的一些内容无法编译通过。常见的解决办法是在xcode中将编译系统设置为 Legacy Build System。

问题来了,cocoapods在执行pod trunk push 或者 pod lib lint时,会自动生成一个xcode工程,而此时的xcode工程由于本机是xcode10, 所以默认就是New Build System。那怎么办呢?

有两个解决方法,一个是本机安装xcode 9,使用xcode-select命令将其设置为默认编译器;另一个是让cocoapods使用Legacy Build System。

第一种方法太过粗暴了,本文不再赘述,我们主要看下第二种方式。那如何才能让cocoapods使用Legacy Build System呢?

我们继续看刚才的报错,是在执行xcodebuild的时候报错的,也就是说cocoapods内部会执行xcodebuild命令,我们首先得知道xcodebuild是否支持编译系统的选择。庆幸的是,通过一番搜索,可以通过添加选项来使其使用Legacy Build System。

5798e5763641df1635be0425bc9d2253.png

那么现在问题来了,xcodebuild命令并不是我们手动执行的,而是pod trunk push内部执行的,也就是说pod会在push之前进行一次校验,校验的时候会使用xcodebuild来进行编译,编译报错,则直接终止push。如果我们能直接修改pod命令所对对应的校验脚本,那么问题就迎刃而解了。

那么如何找到这个校验脚本呢?首先在终端运行 gem which cocoapods命令,该命令会输出cocoapods.rb文件路径。

980839237caf2e7785abb58aa7f66fb2.png

与该文件同级的目录下有个cocoapods目录,这个目录下就存在一个名为 validator.rb文件,该文件就是我们要找的校验脚本文件。

那么如何修改呢?xcode打开这个文件,搜索 def xcodebuild, 在对应的代码块下添加 command += %w(-UseModernBuildSystem=NO),保存即可。

5f904a8483a818c88a97b4f47f0c3513.png

再次运行pod trunk push命令,通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值