Masonry示例Examples使用cocoapods命令pod install之后报错处理

Masonry是iOS平台处理Auto Layout的一个替代方案,我们可以通过官方的例子学习它的使用方法。但是官方demo使用cocoapods命令pod install之后会出现一些问题。

1、

[!] An error occurred while processing the post-install hook of the Podfile.


undefined method `project' for #<Pod::Installer:0x007fe69b0bf458>

这是因为在cocoapods0.38版本做出了一个改变,需要在Xcode打开Masonry目录中的Podfile文件搜索project改成pods_project。

为了让Podfile文件适配其他同事低版本的cocoapods,因为pod是基于ruby实现的,所以可以将Podfile文件中的

  classy_pods_target = installer.project.targets.find{ |target| target.name == COV_TARGET_NAME }
  unless classy_pods_target
   raise ::Pod::Informative, "Failed to find '" << COV_TARGET_NAME << "' target"
  end

改为

if defined? installer.project
  classy_pods_target = installer.project.targets.find{ |target| target.name == COV_TARGET_NAME }
  unless classy_pods_target
   raise ::Pod::Informative, "Failed to find '" << COV_TARGET_NAME << "' target"
  end
end

if defined? installer.pods_project
    classy_pods_target = installer.pods_project.targets.find{ |target| target.name == COV_TARGET_NAME }
    unless classy_pods_target
    raise ::Pod::Informative, "Failed to find '" << COV_TARGET_NAME << "' target"
    end
end

这样,无论在哪个版本的pods上都可以得到正确的配置。

2、接下来会遇到另外一个问题。

[!] An error occurred while processing the post-install hook of the Podfile.


[!] Failed to find 'Pods-MasonryTestsLoader-Masonry' target

解决方法为,在上面的Podfile文件中将

COV_TARGET_NAME = "Pods-MasonryTestsLoader-Masonry"

改为

COV_TARGET_NAME = "Pods-MasonryTestsLoader"

即删掉name尾部的 -Masonry。

好了,到这里应该就可以正常进行了。


当然,还有一种更为简单直接的解决方法,就是将Podfile文件中

post_install do |installer|

后面的代码删除掉就行了。


参考链接:https://github.com/CocoaPods/CocoaPods/issues/3747

http://huang.sh/2015/09/cocoapods-0-38导致的undefined-method-project-for/

https://github.com/SnapKit/Masonry/blob/master/Podfile

https://github.com/SnapKit/Masonry/issues/294


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值