美文网首页
解决升级到Xcode8.x.x后cocapods失效的正确姿势

解决升级到Xcode8.x.x后cocapods失效的正确姿势

作者: PrinceMei | 来源:发表于2017-07-04 14:59 被阅读189次

          每次升级Xcode,一般会导致Xcode工程里的cocapods失效,运行工程到处报错,也没法添加和引用新的第三方依赖,这时很多童鞋就一片哀嚎,妈蛋,卧槽。。。。然后一顿狂百度,google,虽然也不是啥复杂的问题,但随便一折腾就是2小时,难道是自己使用cocapods的姿势不对,甚至开始怀疑人生,好吧,废话不多说(其实已经废话了这么多。。。)时间宝贵,大家且行且珍惜啊。

    首先,安装ruby环境;

       taobao 的 ruby 镜像已经失效,替补方案详情见 https://ruby-china.org/topics/29250

    删除淘宝源 $gem source -r https://ruby.taobao.org to remove

    添加原版源 $gem source -a https://rubygems.org/ to read

    使用 $gem sources -l查看以下确保只有一个https://rubygems.org/源存在

    *** CURRENT SOURCES ***

    https://rubygems.org

    在https://www.ruby-lang.org/zh_cn/downloads/ 下载好源码后,解压在控制台cd进源码文件夹根目录使用命令进行安装

    $ ./configure

    $ make

    $ sudo make install

    以上3步全部完成之后 使用$ruby -v看一下当前Ruby版本

    bogon:ruby-2.4.1 princemei$ gem source

    *** CURRENT SOURCES ***

    到这一步,ruby环境算是安装好了

    其次,安装cocoapods

    $sudo gem install cocoapods --pre

    如果报错 :

    ERROR: While executing gem ... (Gem::Exception)

    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources  or 前面让安装OpenSSL 重新build ruby,or后面是让使用 http 别用https。

    先看一下$openssl version是不是安装了 OpenSSL

    OpenSSL 0.9.8zh 14 Jan 2016恩,有版本,还挺新的

    那就更换源 的地址

    删除 https 源

    $gem source -r https://rubygems.org/ to remove

    添加 http 源

    $gem source -a http://rubygems.org/ to read

    确保添加正确

    $gem source

    *** CURRENT SOURCES ***

    http://rubygems.org/

    见证奇迹的时刻

    $sudo gem install cocoapods --pre

    这需要一段时间,待安装成功后,验证一下是否安装成功

    $ pod --version

    1.3.0.beta.2

    再次,就是在Xcode工程的使用。(这里也有些值得注意的地方,比如Podefile文件的编写)

    如果是旧工程,这建议先删除原来与pods相关的文件

    在终端里,cd到你的工程目录:

    $ cd /Users/xxx/xxx

    $ vim Podfile

    点i进入编辑模式,编写Podfile文件,例如:

    platform:ios,‘8.0’

    target YouProjectName‘do

    pod 'AFNetworking','~> 3.1.0'

    pod 'SDWebImage','~> 3.8.1'

    pod 'SVProgressHUD','~> 2.0.3'

    pod 'MJExtension','~> 3.0.11'

    pod 'MJRefresh','~> 3.1.10'

    pod 'DACircularProgress','~> 2.3.1'

    end

    一定要按官方规范来写,不然没效果,会报错。之前可以简单写成

     platform:ios,‘6.0’

    pod 'AFNetworking'

    pod 'SDWebImage'

    pod 'SVProgressHUD'

    pod 'MJExtension'

    pod 'MJRefresh'

    pod 'DACircularProgress'

    现在不行了,这样会报错:

    [!] Invalid `Podfile` file: syntax error, unexpected tFID, expecting end-of-input.

    [!] Invalid `Podfile` file: syntax error, unexpected keyword_do_block, expecting end-of-input.

    官方规范是 :

    platform:ios, ‘x.0’

    target YouProjectName‘do

    pod 'AFNetworking', '~> 3.1.0'

    pod 'SDWebImage', '~> 3.8.1'

    。。。

    end

    需要注意的是:platform:ios, ‘x.0’的冒号之间不能有空格,而且 这个pod 'AFNetworking', '~> 3.1.0'  的  '~> 3.1.0'  得是用终端命令 pod search AFNetworking 查出来的  不然就不能正常更新下来  ,还有一些第三方框架对target的iOS的最低版本有要求,不能太低,比如更新AFNetworking,就不能写ios, ‘6.0’,不然报错:[!] The dependency `AFNetworking` is not used in any concrete target. 换成ios, ‘8.0’就万事大吉鸟🐦,妈蛋 是不是处处是坑啊。。

    编辑完毕,按ESC退出,输入 :wq 退出

    最后,就是安装pods了

    $ pod install

    等一会儿出现类似如下信息就代表创建成功。每次pod install后记得pod update下。

    好了,你可以去Xcode工程所在目录里找到YourProjectName.xcworkspace文件双击打开工程,愉快地撸代码了,是不是也没多复杂啊!!!!!!!!

    相关文章

      网友评论

          本文标题:解决升级到Xcode8.x.x后cocapods失效的正确姿势

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