CocoaPod的使用

作者: 天空中的球 | 来源:发表于2015-10-08 17:01 被阅读7476次

    开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间,下面简单的介绍下安装与使用。

    安装CocoaPods

    安装方式异常简单 , Mac 下都自带 ruby,使用 ruby 的 gem 命令即可下载安装:

     $ sudo gem install cocoapods
    

    通常会出现下面这个错

    ERROR:  Could not find a valid gem 'cocoa' (>= 0), here is why:
    Unable to download data from https://rubygems.org/ -     Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://rubygems.org/latest_specs.4.8.gz)
    

    另外,ruby 的软件源 https://rubygems.org 因为使用的是亚马逊的云服务,所以被墙了,需要更新一下 ruby 的源,使用如下代码将官方的 ruby 源替换成国内淘宝的源:

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

    然后再重试

     $ sudo gem install cocoa pods
    

    假如又遇到这个错
    Operation not permitted - /usr/bin/fuzzy_match

    可以

    $ sudo gem install -n /usr/local/bin cocoapods
    $ pod setup  
    这一步 pod setup可能会等很久,请耐心等待,1个小时内正常
    

    如果你的 gem 太老,可能也会有问题,可以尝试用如下命令升级 gem:

     $sudo gem update --system
    

    还有一点需要注意,pod setup在执行时,会输出Setting up CocoaPods master repo,但是第一次会等待比较久的时间。这步其实是 Cocoapods 在将它的信息下载到 ~/.cocoapods目录下,如果你等太久,可以试着 cd 到那个目录,用du -sh *来查看下载进度

    使用CocoaPods

    第一步创建 Podfile 文件,在需要使用文件目录下

     $ vim Podfile
    

    第二步 导入您所需要的第三方库

    platform :ios, '8.0'
    use_frameworks!
    target 'MyApp' do 
    pod 'AFNetworking', '~> 3.0' 
    pod 'SwiftyJSON', '~> 2.3'
    end
    

    当然MyApp转换成你个人项目的名字啦

    注意iOS8.0之后,可以增加的动态库了(以前只能是静态库的),为了匹配动态库,增加了

    use_frameworks!
    

    所以我们很多时候都需要加入这句啦

    第三步 编译后既可以用了

     pod install
    

    第四步 注意的地方

    1、使用 CocoaPods 生成的 .xcworkspace 文件来打开工程,而不是以前的 .xcodeproj 文件。
    2、每次更改了 Podfile 文件,你需要重新执行一次pod update命令。
    3、需要查找你所需要的第三方库,直接 pod search 即可。
    4、不要轻易改动项目里面pod文件里的东西。

    可能遇到的问题

    1、pod install的时候无限卡在Updating local specs repositories

     可以使用 pod install --no-repo-update
    

    2、出现下面这个错误的时候,可能是系统升级后的原因

    ERROR:  Could not find a valid gem 'cocoapods' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
    ERROR:  Possible alternatives: cocoa pods
    

    此时需要您重新 pod setup一下,当然上面的那个错,首先你必须先切换官方源啦,就是上文提到的切换到淘宝源(注意是https://ruby.taobao.org/ 因为以前没有s的)就好啦

    3、出现下面这种提示


    屏幕快照 2015-10-09 上午9.37.40.png

    这样其实代表可以用了,也可以升级升级方法:

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

    4、pod inatall 出现下列问题

    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.
    

    则我们需要在Finder中找到项目的项目名.xcodeproj,显示报内容,然后搜OTHER_LDFLAGS,然后你遇到了与之相关的删除即可。

     OTHER_LDFLAGS = "";
      或
    <key>OTHER_LDFLAGS</key>  
    <string></string>  
    

    5、 CocoaPods报错:The dependency AFNetworking is not used in any concrete target

    是在创建的Podfile的时候,需要按格式创建,不能像以前那样的原始方法啦。

    platform :ios, '8.0'
    use_frameworks!
    target 'MyApp' do 
    pod 'AFNetworking' 
    pod 'SwiftyJSON'
    end
    

    6、提示 file not found 的时候

    那么我们可以尝试这么引入,以“Masonry”举例,:#import "Masonry.h"或者通过#import "Masonry/Masonry.h"
    如果仍然没有效果,那么需要在工程配置一下.在工程的Build Settings搜索Search Paths,然后在User header search paths中添加$(SRCROOT)并且选择recursive。

    $(SRCROOT)
    参考的链接

    http://www.devtang.com/blog/2014/05/25/use-cocoapod-to-manage-ios-lib-dependency/
    http://my.oschina.net/w11h22j33/blog/206129

    相关文章

      网友评论

        本文标题:CocoaPod的使用

        本文链接:https://www.haomeiwen.com/subject/ypjncttx.html