美文网首页iOS_收藏cocoapodsswift编程开发
我第一次成功安装CocoaPods的过程

我第一次成功安装CocoaPods的过程

作者: 果啤 | 来源:发表于2016-07-25 00:26 被阅读10222次

    感悟

    费了两天晚上的功夫安装上了,一边玩守望先锋 ,一边看CocoaPods下载的进度.300多兆的文件,下载了3个多小时,既然咱不是特别聪明,咱就多努力,多一点坚持慢慢来吧.整个安装过程中终端的内容如下(可以略过,对我有点用):
    <pre>
    <code>
    Last login: Sat Jul 23 23:07:37 on ttys001 bogon:~ liyilin$ gem source -l *** CURRENT SOURCES *** https://ruby.taobao.org/ bogon:~ liyilin$ sudo gem install cocoapods Password: ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod bogon:~ liyilin$ sudo gem update --system Updating rubygems-update ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems bogon:~ liyilin$ sudo gem update-n/usr/local/bin --system ERROR: While executing gem ... (Gem::CommandLineError) Unknown command update-n/usr/local/bin bogon:~ liyilin$ sudo gem update-n /usr/local/bin —system ERROR: While executing gem ... (Gem::CommandLineError) Unknown command update-n bogon:~ liyilin$ sudo gem update -n /usr/local/bin —system Updating installed gems Nothing to update bogon:~ liyilin$ sudo gem install -n /usr/local/bin cocoapods Successfully installed cocoapods-1.0.1 Parsing documentation for cocoapods-1.0.1 1 gem installed bogon:~ liyilin$ pod install [!] No 'Podfile' found in the project directory bogon:~ liyilin$ pod search AFNetworking Setting up CocoaPods master repo Setup completed [!] Unable to find a pod with name, author, summary, or description matchingAFNetworking`
    bogon:~ liyilin$ rm ~/Library/Caches/CocoaPods/search_index.json
    bogon:~ liyilin$ pod search AFNetworking
    Creating search index for spec repo 'master'.. Done!

    CocoaPods是什么?

    CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具。利用 CocoaPods,可以定义自己的依赖关系 (称作 pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。

    CocoaPods 背后的理念主要体现在两个方面。
    首先,在工程中引入第三方代码会涉及到许多内容。对开发者来说,工程文件的配置会让人很沮丧。在配置 build phases 和 linker flags 过程中,会引起许多人为因素的错误。CocoaPods 简化了这一切,它能够自动配置编译选项。

    通过 CocoaPods,可以很方便的查找到新的第三方库。

    CocoaPods是用 Ruby 写的,想要使用它首先要有Ruby环境.
    RubyGems简称gems,是一个用于对Ruby组件进行打包的Ruby打包系统

    个人总结的安装步骤(看了好多相关的博客)

    将ruby的默认源替换为淘宝的RubyGems镜像
    因为国内网络原因,导致rubygems.org存放在亚马逊上面的资源容易连接失败
    gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.org/
    查看此时的源
    bogon:~ liyilin$ gem source -l
    输出结果
    *** CURRENT SOURCES *** https://ruby.taobao.org/

    之后就可以更新Mac的gem,gem是管理Ruby库和程序的标准包
    bogon:~ liyilin$ sudo gem update --system
    终端提示
    Updating rubygems-update ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems
    上网搜索后得知
    Mac OS X 10.11后不能使用sudo gem update --system了
    需要替换成:sudo gem update -n /usr/local/bin —system
    bogon:~ liyilin$ sudo gem update -n /usr/local/bin —system
    终端提示貌似没有可以更新的内容
    Updating installed gems Nothing to update

    接下来安装CocoaPods
    bogon:~ liyilin$ sudo gem install -n /usr/local/bin cocoa pods
    终端提示成功了...
    Successfully installed cocoapods-1.0.1 Parsing documentation for cocoapods-1.0.1 1 gem installed

    使用CocoaPods查找需要的第三方框架(就拿AFNetworking试试吧)
    bogon:~ liyilin$ pod search AFNetworking
    终端提示如下,并卡住了!
    Setting up CocoaPods master repo
    上网搜索后得知Cocoapods在将它的信息下载到 ~/.cocoapods里
    然后我就前往这个文件夹,不断用快捷键预览它的大小
    下载速度太慢了,我想先去玩几把守望先锋吧,也不能干等着吧 玩了五局定级赛(2胜3负),还没下载完.那我去搓几把炉石吧.

    炉石任务正刷着的时候,终端显示下载完了,但是还有一个警告
    Setup completed [!] Unable to find a pod with name, author, summary, or description matching 'AFNetworking'
    上网搜索后得知要删除一个文件
    bogon:~ liyilin$ rm ~/Library/Caches/CocoaPods/search_index.json
    然后我再一次搜索AFNetworking
    bogon:~ liyilin$ pod search AFNetworking
    终端打印如下:

    <pre>
    <code>
    `
    Creating search index for spec repo 'master'.. Done!

    应该是搜索出了与AFNetworking相关的内容

    我再一次重新搜索AFNetworking,终端显示如下
    <pre>
    <code>
    `
    -> AFNetworking (3.1.0)
    A delightful iOS and OS X networking framework.
    pod 'AFNetworking', '~> 3.1.0'

    • Homepage: https://github.com/AFNetworking/AFNetworking
    • Source: https://github.com/AFNetworking/AFNetworking.git
    • Versions: 3.1.0, 3.0.4, 3.0.3, 3.0.2, 3.0.1, 3.0.0, 3.0.0-beta.3,
      3.0.0-beta.2, 3.0.0-beta.1, 2.6.3, 2.6.2, 2.6.1, 2.6.0, 2.5.4, 2.5.3, 2.5.2,
      2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0,
      2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4,
      1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2,
      1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo]
    • Subspecs:
      • AFNetworking/Serialization (3.1.0)
      • AFNetworking/Security (3.1.0)
      • AFNetworking/Reachability (3.1.0)
      • AFNetworking/NSURLSession (3.1.0)
      • AFNetworking/UIKit (3.1.0)
        `
        </code>
        </pre>

    说明CocoaPods确实能用了

    用CocoaPods管理项目中的第三方框架
    打开你的项目所在的那个文件夹,新建一个叫Podfile的文件
    bogon:~ liyilin$ cd /Users/liyilin/Desktop/cocoapodsTest bogon:cocoapodsTest liyilin$ pod init

    编辑Podfile文件
    bogon:cocoapodsTest liyilin$ vim Podfile
    终端显示Podfile内容如下
    <pre>
    <code>
    `

    Uncomment this line to define a global platform for your project

    platform :ios, '9.0'

    target 'cocoapodsTest' do

    Comment this line if you're not using Swift and don't want to use dynamic frameworks

    use_frameworks!

    Pods for cocoapodsTest

    end
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    "Podfile" 10L, 257C
    `
    </code>
    </pre>

    其中注释说如果使用Swift就得保留use_frameworks!
    输入i进行编辑,终端显示如下,注意最后一行变为-- INSERT --,此时可以编辑
    <pre>
    <code>
    `

    Uncomment this line to define a global platform for your project

    platform :ios, '9.0'

    target 'cocoapodsTest' do

    Comment this line if you're not using Swift and don't want to use dynamic frameworks

    use_frameworks!

    Pods for cocoapodsTest

    end
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    -- INSERT --
    `
    </code>
    </pre>

    然后我根据搜索出的AFNetworking的信息,编辑Podfile文件如下:
    (去掉了platform前面的#,插入了pod 'AFNetworking', '~> 3.1.0')

    <pre>
    <code>
    `

    Uncomment this line to define a global platform for your project

    platform :ios, '9.0'

    target 'cocoapodsTest' do

    Comment this line if you're not using Swift and don't want to use dynamic frameworks

    use_frameworks!
    pod 'AFNetworking', '~> 3.1.0'

    Pods for cocoapodsTest

    end
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    -- INSERT --
    `
    </code>
    </pre>

    然后点击ESC,输入:wq保存并退出

    <pre>
    <code>
    `

    Uncomment this line to define a global platform for your project

    platform :ios, '9.0'

    target 'cocoapodsTest' do

    Comment this line if you're not using Swift and don't want to use dynamic frameworks

    use_frameworks!
    pod 'AFNetworking', '~> 3.1.0'

    Pods for cocoapodsTest

    end
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    :wq
    `
    </code>
    </pre>

    接下来为项目导入第三方库和相关依赖库
    bogon:cocoapodsTest liyilin$ pod install
    终端提示导入成功,并提示你从此使用cocoapodsTest.xcworkspace这个文件来编写项目
    <pre>
    <code>
    `
    Analyzing dependencies
    Downloading dependencies
    Installing AFNetworking (3.1.0)
    Generating Pods project
    Integrating client project

    [!] Please close any current Xcode sessions and use cocoapodsTest.xcworkspace for this project from now on.
    Sending stats
    Pod installation complete! There is 1 dependency from the Podfile and 1 total
    pod installed.

    `
    </code>
    </pre>

    使用cocoapodsTest.xcworkspace打开项目,目录如下:


    屏幕快照 2016-07-24 下午11.52.28.png

    之后我参考了AFNetworking在github上的示例,试验了一下,证明AFNetworking导入成功而且能使用.
    <pre>
    <code>
    `
    import UIKit
    import AFNetworking

    class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
        let manager = AFURLSessionManager.init(sessionConfiguration: configuration)
        let URL = NSURL(string: "http://httpbin.org/get")
        let request = NSURLRequest(URL: URL!)
        let dataTask = manager.dataTaskWithRequest(request) { (response, responseObject, error) in
            
            if error != nil
            {
                print("Error: \(error)")
            }
            else
            {
                print("response->\(response)");
                print("responseObject->\(responseObject)")
            }
        }
        dataTask.resume()
        
    }
    

    }
    `
    </code>
    </pre>

    调试窗口打印如下:


    屏幕快照 2016-07-24 下午11.58.33.png

    OVER

    相关文章

      网友评论

      • Hepburnly:MacBook-Pro:~ apple$ sudo gem install -n /usr/local/bin cocoapods
        ERROR: While executing gem ... (OpenSSL::SSL::SSLError)
        hostname "upyun.gems.ruby-china.org" does not match the server certificate
        请问怎么解决啊?
      • 金银岛:现在已经有cocoapods的APP了,被繁琐的环境配置过程折磨的你们,终于可以解脱了!
      • Vincenzo:podfile中使用了use_frameworks!项目汇报linker commend failed,请教是什么问题
        eryuxinling:删除use_frameworks! 而且我遇到的是删除后才出现的linker command failed with exit code 1这个错误,解决办法大概是找到:Build settings ->Linking->Other Linker Flags 下的属性全部删除,修改为-all_load(建议备份一下工程,有人说解决不了),我的这个报错解决了,仅供参考
      • 7a946bf5d2ca:接下来安装CocoaPods
        bogon:~ liyilin$ sudo gem install -n /usr/local/bin cocoa pods
        终端提示成功了...

        cocoa pods 中间没有空格 被你坑了
      • 蓑衣微凉:感谢楼主分享,问题解决了 :clap:
      • 123467:/Users/xiangyinquan/Desktop/屏幕快照 2016-11-09 下午2.31.52.png
        求告诉这是怎么回事
      • 吴Yuan小森森:楼主 按照您到步骤执行 执行到pod search AFNetworking 执行不下去 报错 ,报错内容:Setting up CocoaPods master repo
        [!] /usr/bin/git clone https://github.com/CocoaPods/Specs.git master

        Cloning into 'master'...
        fatal: unable to access 'https://github.com/CocoaPods/Specs.git/': Failed to connect to github.com port 443: Connection refused 可否加一下我到企鹅 804253217 讲解一下。
        吴Yuan小森森:@呆萌长腿猿 翻墙解决的 国内网络访问不了外网
        呆萌长腿猿:@Loser森 道友,请问这个问题是怎么解决的啊
      • 00f9651cd88d:正在按照楼主的方法尝试,貌似很有用,正卡在“Setting up CocoaPods master repo”这一步,先看部电影再说。。。
      • xiongyi:感谢楼主大大分享,太感谢啦。
        果啤:@xiongyi 分享快乐:smile:

      本文标题:我第一次成功安装CocoaPods的过程

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