iOS开发对于第三方类库的管理-cocoapods

  


cocoa pods的安装及使用:

在安装时,终端会需要键入密码,因为密码输入时的不可见性,单输入错误时会按回车会有提示出现。

一:在mac环境下一般都有自带的ruby环境,使用时仅需要进行升级。

    在终端下的命令: 

            $ sudo gem update --system

  查看ruby环境的版本信息:

            $ ruby -v

如果Ruby没有安装,请参考  http://www.cnblogs.com/daguo/p/4097263.html。

二:安装CocoaPods时我们要访问cocoapods.org,用淘宝的RubyGems镜像来代替官方版本,执行以下命令:

                              $   gem sources --remove https://rubygems.org/

 等到有反应后键入命令: 

                              $  gem  sources -a https://ruby.taobao.org/

********* 淘宝目前已停用http协议的镜像服务,在配置中用https代替**************

查看ruby下的sources的命令 

                               $  gem sources -l

只有在终端中出现下面文字才表明你上面的命令是成功的:

*** CURRENT SOURCES ***


https://ruby.taobao.org/

          

三 :安装Cocoapods,在终端输入命令:

                               $ sudo gem install cocoapods 

等上十几秒钟,CocoaPods就可以在你本地下载并且安装好了,不再需要其他设置。


              ,

1.使用search命令搜索类库名

   $ pod search AFNetworking 



三.CocoaPods的使用

(1)在终端shell中cd 来到你要管理的项目

(2)添加第三方库
搜索一个开源库
     $ pod search AFNetworking
在工程目录里建一个Podfile文件

      $ touch Podfile
键入内容:

      $ vim Podfile


内容按这个格式来
      platform :iOS,'9.0'

      pod 'ASIHTTPRequest', '~> 1.8.2'
在编辑完后按 esc,然后按":",这个时候输入wq保存退出


运行:pod install 你的工程就多了个xworkspace文件夹,以后用这个打开工程

四.CocoaPods的使用心得

(1)最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级CocoaPods的spec仓库,加一个参数可以省略这一步,命令如下: pod install --verbose --no-repo-update pod update --verbose --no-repo-update
$ pod install只会按照Podfile的要求来请求类库,如果类库版本号有变化,那么将获取失败。但是 $ pod update会更新所有的类库,获取最新版本的类库。每次用$ pod update就行。

(2)安装一个xcode插件管理工具  http://alcatraz.io,执行curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh  完了打开xcode->window->package manger 搜cocoapods安装,方便操作。


(3)用到svn,git多人协作的话,Pods/这个文件夹不要上传,.../Pods/Pods.xcodeproj  ...Pods/Target Support Files/这些每次编译都会改动从而引起合并代码的时候冲突


pod ‘AFNetworking’      //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’,  ‘2.0//只使用2.0版本
pod ‘AFNetworking’, ‘>2.0//使用高于2.0的版本
pod ‘AFNetworking’, ‘>=2.0//使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘<2.0//使用小于2.0的版本
pod ‘AFNetworking’, ‘<=2.0//使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~>0.1.2//使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1//使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0//高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

问题处理:

  • 升级ruby
    sudo gem update —system
  • 按照网上的教程,来到这一步应该就是要执行“sudo gem install cocoapods”来下载cocoa pods了,但是将系统升级到了10.11后,会发现不好使,个人猜测是10.11修改了部分目录的权限,导致无法cocoapods下载的时候无法写入默认目录,具体提示为:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/fuzzy_match
    在stackoverflow上搜索,顺利找到了解决方法,改掉将默认下载目录的环境变量,这里需要改两个值:GEM_PATHGEM_HOME,一个是让别人找到cocoapods,一个是它下载的路径,这里你可以理解为两个作用一样就好啦,具体操作如下:
    先新建一个存放cocoapods等其他gems的目录:
    mkdir -p $HOME/Software/ruby
    再通过以下命令更改两处环境变量
    export GEM_HOME=$HOME/Software/ruby
    export PATH=$PATH:$HOME/Software/ruby/bin
    需要注意的export命令只对当前终端窗口有用,关闭或者在其他窗口操作需要重新再敲一次,当然你也可以把上述命令放在 /etc/profile文件中,这样下次登录后会执行这里面的命令。

  • 通过以上步骤,下载cocoapods了,命令为:gem install cocoa pods

    还有就是安装cocoapods没有权限的时候,本来是$sudo gem install cocoapods ,但是显示没有权限,换成这句$sudo gem install -n /usr/local/bin cocoa pods
    ERROR:  While executing gem ... (Errno::EPERM)
        Operation not permitted - /usr/bin/pod
    bogon:~ my$ sudo gem install -n /usr/local/bin cocoa pods
     

  • >>>升级pod库后的Podfile的书写规范
  • 出现问题 :
  • [!] The dependency `AFNetworking` is not used in any concrete target.

    podfile的格式问题造成的
    标准格式:
    platform :ios, '8.0'
    #use_frameworks!个别需要用到它,比如reactiveCocoa
    target'MyApp'do
    pod'AFNetworking','~> 2.6'  
    pod'ORStackView','~> 3.0' 
    pod'SwiftyJSON','~> 2.3'
    end
  • 里面的 MyApp 记得替换为自己攻城里面的target。这样就基本OK了,执行pod install / pod update 就都可以了。(use_frameworks! 这个是个别需要的,这里修改一下,可以把我上面的代码中的这一行【删除】



  • Setting up CocoaPods master repo 卡着不动

  • 1、那是因为 淘宝的那个镜像(https://ruby.taobao.org/ )已经不可用了。所以我们现在用最新支持的ruby镜像(https://gems.ruby-china.org/)

      需要的命令行:

      $ gem sources -r https://rubygems.org/ (移除旧版本的镜像,如果你不知道你电脑上目前用的是什么镜像,可用  gem sources -l  来查看
      $ gem sources -a https://gems.ruby-china.org/ (增加可用的镜像)
      $ gem sources -l  (用来检查使用替换镜像位置成功)

    2、当pod setup 进入Setting up CocoaPods master repo 等待的时候表示正在下载了,此时你通过新开一个终端窗口,输入"cd ~/.cocoapods/"命令行跳到cocoapods文件夹内,执行"du -sh *"查看正在下载的文件夹的大小

    3、当出现如下

    [!] An error occurred while performing `Git pull` on repo `master`.

    [!] /usr/bin/git pull --ff-only

    这个错误应该是说这个节点有问题。就又找资料,然后试试把cocoapods的节点删除,重新添加一个节点,或许就行,说干就干:

    原因: Cocoapods的分支不支持当前最新的Xcode版本

    解决办法: 删除master分支 重新建立新的分支

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

    然后再: pod setup



    mac安装cocoapods教程及错误处理



    注意:以下命令都是通过终端执行

    安装cocoapods的步骤

    安装
    • 第一步:
      sudo gem install cocoapods
      注释:如果你的mac系统是10.11,则使用下面这个命令
      sudo gem install -n /usr/local/bin/ cocoapods
    • 第二步:
      pod setup
      注释:pod setup在执行时,会输出Setting up CocoaPods master repo,会等待很长时间,可以使用 cd ~/.cocoapods进入此目录下,然后用du -sh *来查看下载进度
    错误处理
    • Ruby版本低于2.2.2报错:
      Error installing pods:activesupport requires Ruby version >= 2.2.2.
      解决方法:按照下面升级Ruby版本进行解决
    • 现有的Ruby源网址访问不了,SSL协议不支持
      ERROR: While executing gem … (OpenSSL::SSL::SSLError) SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A
      解决方法:按照下面检测Ruby资源进行解决

    检测Ruby资源

    • 第一步:先验证当前的Ruby资源
      gem sources -l
      注释:一般情况下是https://rubygems.org/ ,但是这个资源很有可能会被墙,所以我们接下来要替换它,如果不是这个源,可跳到第几步
    • 第二步:移除当前的默认源
      gem sources -r https://rubygems.org/
    • 第三步:利用新的源,一般情况下使用淘宝的Ruby镜像可以防止被墙
      gem sources -a https://ruby.taobao.org/
    • 第四步:检测新源是否替换成功
      gem sources -l
      如果正常,则显示为下图

    Paste_Image.png

    升级Ruby版本


      我们准备使用rvm对Ruby版本,因为rvm可以使你拥有多个版本的Ruby,并且可以在多个版本之间自由切换
    检测安装rvm
    • 第一步:检测rvm版本
      rvm -v
      注释:如果能显示版本,则说明你本身安装了rvm
    • 第二步:安装rvm
      curl -L get.rvm.io | bash -s stable
      等待执行完毕后继续输入
      source ~/.rvm/scripts/rvm
    • 第三步:检测rvm版本
      rvm -v
      注释:如果能显示版本,则说明你本身安装了rvm
    检测安装Ruby
    • 第一步:查看已安装的Ruby
      rvm list
      注释:下图是作者的显示内容,注意你的ruby版本要大于或等于2.2.2,否则会无法安装cocoapods,如果你的ruby版本小于2.2.2,继续下一步,若大于或等于2.2.2,可以跳过检测安装Ruby这一项了

      Paste_Image.png
    • 第二步:查看Ruby的版本,和第一步作用类似
      ruby -v
      注释:下图是作者的显示截图

      Paste_Image.png
    • 第三步:如果有小于2.2.2的版本的Ruby,则卸载它
      rvm remove 2.2.4
      注释:成功后,记得用第一步和第二步检测,看是否成功卸载,检测成功后,继续执行下一步
    • 第四步:列出Ruby可安装的版本信息
      rvm list known
    • 第五步:安装一个Ruby版本
      rvm install 2.2.4
      如果想升级成默认版本的话,执行下条语句
      rvm use 2.1.4 --default
    • 第六步:再次使用第一步和第二步查看Ruby版本信息,确保安装成功,Ruby版本已经至少达到2.2.2,则检测安装Ruby的步骤完成
    问题1:

    /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:308:in `to_specs': Could not find 'cocoapods' (>= 0) among 40 total gem(s) (Gem::MissingSpecError)

    解决方案:

    LINdeMacBook-Pro:~ linwaydon$ pod --version

    /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:308:in `to_specs': Could not find 'cocoapods' (>= 0) among 40 total gem(s) (Gem::MissingSpecError)

    Checked in 'GEM_PATH=/Users/linwaydon/.gem/ruby/2.0.0:/Library/Ruby/Gems/2.0.0:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0', execute `gem env` for more information

    from /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:320:in `to_spec'

    from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'

    from /usr/local/bin/pod:22:in `<main>'

    LINdeMacBook-Pro:~ linwaydon$ gem install cocoapods -V --no-ri --no-rdoc   //电脑会重启

    ......

    ......

    ......

    LINdeMacBook-Pro:~ linwaydon$ sudo gem install cocoapods -V


    /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.3.1/lib/cocoapods/user_interface/inspector_reporter.rb

    /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.3.1/lib/cocoapods/validator.rb

    ERROR:  While executing gem ... (Errno::EPERM)

        Operation not permitted - /usr/bin/pod

    LINdeMacBook-Pro:~ linwaydon$ sudo gem install -n /usr/local/bin cocoapods

    Successfully installed cocoapods-1.3.1

    Parsing documentation for cocoapods-1.3.1

    Installing ri documentation for cocoapods-1.3.1

    1 gem installed

    LINdeMacBook-Pro:~ linwaydon$ pod --version

    1.3.1

    问题2:

    [!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.

    You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`

    解决方案:

    LINdeMacBook-Pro:~ linwaydon$ pod repo add master https://github.com/CocoaPods/Specs.git

    [!] To setup the master specs repo, please run `pod setup`.

    LINdeMacBook-Pro:~ linwaydon$ pod setup







    链接:http://www.jianshu.com/p/57b599e48ba2

    淘宝镜像已换为阿里云
    使用变更:
    http://blog.csdn.net/ylgwhyh/article/details/50542688

    问题3 :cocoapods插件遇到的问题及解决方案。
    之后执行pod install 
    控制台出现这样的提示信息:
    /usr/local/bin/pod install
    env: ruby_executable_hooks: No such file or directory

    解决方法:

    在终端输入  which ruby_executable_hooks 或 which GEM 
    把得到的路径复制,打开Xcode-> Product-> cocoaPods - >GEM_PATH  粘贴刚才得到的路径 把最后的/gem 或 /pod去掉试试 


    在xcode9中,用Cocoapods的时候,  碰到了 这个错误  Resolved command path for "pod" is invalid.    Expanded GEM_PATH: /usr/bin

    解决方案:

    $ sudo gem install -n /usr/local/bin cocoa pods 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值