CocoaPods 1.1.1 - 1.2.0.beta 问题



2016 . 11 . 23


CocoaPods 官网 : 

https://cocoapods.org

Coding上的 镜像 :  

https://coding.net/u/CocoaPods/p/Specs/git



最近把项目中的 CocoaPods 升级了一下,这过程也遇到了一些问题, 记录和大家分享一下。 如有问题 可以留言~  如果成功了~ 给个赞呗 ~

首先 安装/更新 CocoaPods 到最新版本, 使用命令


sudo gem install -n /usr/local/bin cocoapods

或者

sudo gem install -n /usr/local/bin cocoapods --pre

然后再

pod --version 

查看一下当前安装的最新版本。

注明: 前者没有加 --pre 的,会安装最新已发布的版本 ; 后者加了 --pre 的,会安装到最新的 beta 版本。 如下图 :


最新版本 :




最新 beta 版:




这两种版本理论上来说,都可以使用,没有太大的冲突或者不同,可以去官网看说明。


接下来接下来... 才是大家关心的 pod setup 问题,一定很多人在这一步,怎么试都不成功,要么下载到一半失败, 要么使用 GitHub Desktop下载自己 Fork 过来的 Specs,也是才下载没多久也失败, 前面的这些问题,虽说和网速有关,但也不完全,也和你的网络ip有关,因为你使用的GitHub上的镜像。  还有一些可能的错误,这里统一汇总一下:

(以下的每一步,都要确保之后才能开始下载 Specs 镜像) 


1. 使用终端下载,可能因为终端的下载上限大小而失败,  处理方式就是修改设置 下载上限的大小。 本片文章中, 2016.8.18 记录中有详细说明将 http.postBuffer 设置为500M ,这里不再说明具体操作。


2. 这个问题我觉得是大家出现最多的, 就是开始下载了,到一半可能就失败了,然后有这样的错误提示 fatal: The remote end hung up unexpectedly

  意思是远程终端误认为操作停止了。  

这个错误造成的原因有这几个:

1 > 我们可能忽略了,如果Mac 进入休眠状态,终端下载没多久就会失败的情况, 为了防止因为休眠状态而导致下载失败的情况,我们临时性的将Mac设置为永不休眠状态。  系统偏好设置 -> 节能 -> 电源适配器 , 将滑块拖到永不 状态。




2 > 在没有休眠的状态下, 还有可能因为 请求超时而失败, 这个是因为下载请求在一定的时间内,没有得到响应, 所以也会造成远程终端中断下载。对于这个问题,我们要设置终端下载的超时时间。 新打开一个终端,输入命令

cd/etc/ssh(进入ssh)

sudo vi ssh_config(编辑ssh_config)

按 i 进入编辑模式,

再最后一行添加

ServerAliveInterval 30(设置超时时间30秒)

然后再 Esc ,输入  :wq  

如下图:

设置了超时时间,可以在一定的程度上,保证了下载请求间隔的响应时间。


3. 以上的两大步都设置处理好后,接下来我们要开始下载 Specs 镜像了,其实操作的方式也是有多种的,如你直接 pod setup ,下载的镜像是 github 上的,然后你再打开顶一个终端看进度,几乎几秒才下载 几Kb,要知道现在的镜像大小解压出来800+M ,这样下是不是很容易失败? 速度慢,指不定在某个时候就下载超时了。

好在国内有自己的镜像,放在Coding 上了,这个镜像服务 是每日都会更新的,和 github 上是一样的。这就是我们的解决方案,虽然现在的速度没有说特别快,但是相比 github 上好太多了,至少下载过程中失败的几率大大减少了,我自己在公司下载的速度 是 50 kb/s ,  而在家里,到晚上12点的时候,下载的速度 254 kb/s , 所以只要不是网速太差,我想下载也不至于还是1kb、2kb这样的。


终端输入:

git clone https://git.coding.net/CocoaPods/Specs.git ~/.cocoapods/repos/master




我们可以看到实时的下载进度。下载解压好后,再输入


pod setup 


等待一下... 如果出现如下错误,


Setting up CocoaPods master repo
  $ /usr/bin/git -C /Users/yutianlong/.cocoapods/repos/master pull --ff-only
  error: RPC failed; curl 7 Failed to connect to github.com port 443: Operation timed out
  fatal: The remote end hung up unexpectedly
[!] CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`
YuTianLong:~ yutianlong$ pod repo update
Updating spec repo `master`
  $ /usr/bin/git -C /Users/yutianlong/.cocoapods/repos/master pull --ff-only
  From https://github.com/CocoaPods/Specs
     cd9078f..706b917  master     -> origin/master
  Updating cd9078f..706b917
  Fast-forward


这个错误大概是说未能连接到github.com 443端口,我们setup就是希望配置一下连接上去,它的提示中有建议操作, pod repo update --verbose,更新一下 repo.

所以我们执行一下

pod repo update --verbose


等待...最后输入

CocoaPods 1.2.0.beta.1 is available.
To update use: `sudo gem install cocoapods --pre`
[!] This is a test version we'd love you to try.


For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.0.beta.1


说明你安装成功了,并且可以继续使用 CocoaPods 了。  



其它:

有的时候我们在 pod install 或者 pod update 的时候,会出现这样的错误提示:

[!] CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`


提示你需要 pod repo update --verbose ,但是如果你不想更新repo, 可以使用这样的命令:

pod install --verbose --no-repo-update

pod update --verbose --no-repo-update




----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



2016 . 08 . 18


在升级CocoaPods 1.0.1之前,版本是 0.39.0 ,升级过程中,也是遇到各种命令问题,包括升级完成之后,部分的第三方库 也会造成冲突,报红,在这里做一个记录汇总,希望能一起学习。


升级前的说明。

默认看这篇文章的童鞋都是有装旧版 pods。  如果OSX 版本是10.11以上,一些安装的命令 还需要带上路径,包括下载安装镜像的时候,还需要将 git 能下载文件大小的上限扩大,这里会扩大到500M,不然下载的 Specs 镜像由于过大,会下载安装失败,导致有些童鞋认为是墙的原因。  

ruby 环境一样可以用  https://ruby.taobao.org/ 
如果不知道自己的环境,可以使用  gem sources -l  命令进行查看。

完成安装好,需要安装CocoaPods , 和 Specs镜像文件。


升级过程安装CocoaPods:

打开终端:

sudo gem install cocoapods   出现错误
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/xcodeproj

然后会尝试使用更新

sudo gem update --system     结果还是有错

ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/update_rubygems

这两条命令是早之前的安装方式用的,而现在升级Pods到 1.0,需要携带安装的路径, 更新也需要路径。

为了安全起见,装完不会出什么冲突,我们在装之前,把原有的Pods全部删除。


查看本地装了关于cocoapods的哪些东西,在终端输入

gem list --local | grep cocoapods

卸载命令:

sudo gem uninstall cocoapods   

//////////
这时候如果你有多个Pods版本,会提示,你选择 All versions 。输入对应的数字 3。




然后会提问你........[YN] ?

输入 y ,确定。
/////  如果没有多个版本,就是直接删除完成,这里可以忽略。



开始安装最新版的Pods :

sudo gem install -n /usr/local/bin cocoapods

等待安装完成,这个应该很快,然后可以查看下 pod 版本, 是最新版的。

pod --version

如果不是最新版本的,可以使用 Update 命令升级, 具体也需要带上路径:

sudo gem update -n /usr/local/bin --system

到这里,CocoaPods 基本是下载安装完成了。

接下来开始安装 Specs 镜像文件。


升级过程安装Specs镜像 :

正常来说,按照旧版本的安装方法,我们会这样:

pod setup

用完这个命令,很多童鞋会一直停留在这里不动,

Setting up CocoaPods master repo...

这个是它正在后台下载镜像文件,这个文件比较大,有400+M, 解压完有 700+M,而且很奇怪,网速都是100多K,所以慢成狗了....

而且你会发现,现在到200M 左右,就失败了...

[!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master


Cloning into 'master'...
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed




这是因为,从git 上下载 的内容大小是有上限的,所以会失败,我们要扩大这个上限。

所以正确的做法应该是,

先删除本地 master :

sudo rm -fr ~/.cocoapods/repos/master


********************************************* 设置终端下载上限 大小 *********************************************

进入cocoapods目录,

cd ~/.cocoapods

创建 git 文件 (如果没有创建,会 error: could not lock config file .git/config: No such file or directory)

git init

然后再执行 (524288000 == 500M)

git config http.postBuffer 524288000

这样就算给能下载的文件大小 设置了上限为500M 了,可以用命令查看下

git config -l



 到这里算是把下载 Spece镜像 之前的工作都做好了,这样就算网速再慢,也不担心会因为上限不足 而下载失败再重新,太恶心了。

****************************************************************************************** 

然后可以在当前终端执行:

pod setup 

执行之后,可以在开启一个 终端,来实时查看下载的进度,新开启的终端执行如下命令:

进入 pods 目录

cd ~/.cocoapods

查看下载:(这个命令可以实时执行)

du -sh *

结果:





等待提示Success .... 

到这里,就算CocoaPods 1.0.1,  Specs 镜像都安装完成了。


CocoaPods 、Podfile的完善及使用。

在这里省略了创建Podfile 的过程... 

一般来说我们之前,如果是普通点的使用Pods, Podfile这么写就可以了。






然后按 ESC , 冒号 ,  wq 保存并退出。

再 :

pod install 

这时候会报错:

[ ! ] the dependency 'xxxxxxxxx'  is not used in any concrete target .



去CocoaPods 的官网查看了下,处理方式 应该是在Podfile 里的写法 要稍微有所改变: 

重新编辑Podfile :

vim Podfile

然后将内容改为这样:



加上 

target  ' 你的项目名'  do

pod 'AFNetworking'

        pod 'MKNetworkKit'

end


再保存,

pod install。这个时候就能成功安装第三方库了。


还有一些情况会有这样的错误,比如你导入 DKImagePickerController 这个库,是一个相册的库。

如果你这么加 :




然后 install 的时候,就会出现这个错误:

[!] Pods written in Swift can only be integrated as frameworks; add `use_frameworks!` to your Podfile or target to opt into using it. The Swift Pod being used is: xxxxxxxxxxxx





所以, Podfile 应该加上这个 :   use_frameworks !






在 install 就能成功了。




编译可能出现的错误、解决方法。

在安装好CocoaPods 、 镜像 、 以及需要的第三方库后,可以打开  xcworkspace 工程文件。 然后 Command + B  编译一下项目,如果你的项目有安装 MKNetworkKit 这个轻量的网络库,那么可能会出现下面的这个错误:





MKNetworkKit :

Could not build module 'Reachability'


Reachability :

Include of non-modular header inside framework module 'Reachability.Reachability'


处理方式:

选中 Reachability.h 这个类, 看右侧的 Target Membership ,如下图, Reachability 这个库的一个属性默认是Public 公有的,将这个改成Private 私有的,就行了。




然后再Command + B 编译一下, 就Success了。



总的来说,至少现在升级到Pods1.0.1,问题还是有点多,,还没升级的朋友在0.39.0版本也没有多大影响。





----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- ----------------------- -----------------------











  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值