swift cocoapods 我的安装之旅

2017-03-29 23:46

前言

最近要求写一个swift项目,这对于swift乃至objc都非常不了解的我来说是一个极大的挑战。前几天组长建了个项目,要求配置cocoapod来进行项目管理。于是我花了将近一天来配置。tc这堵墙真的挺麻烦的。如果已经能够全局翻墙(包括终端)的,请直接参考这篇文章,如果还没有成功翻墙的,请务必阅读完全文再进行配置。因为里面可能涉及到一些对错误配置的纠正。

简单介绍cocoapods

cocoapods是在swift和objective-c中用来进行依赖管理的。它是通过Ruby进行安装。Mac上有自带的Ruby。所以成功翻墙的只需要一条语句sudo gem install cocoapods就可以安装。
安装成功后在项目目录下创建podfile并执行pod install就可以成功完成项目依赖管理啦
具体情况将在后文继续介绍
详情请参考官方网站

从homebrew开始

为什么要从homebrew开始呢?因为自从MAC操作系统升级到Sierra之后,很多原有的配置出现了或多或少的不兼容的现象。通过homebrew对ruby进行更新可以避免后面的下载和升级等等操作不会报错。这一步可以省略。出现此种报错时请参考该教程。
homebrew官网:https://brew.sh/

安装homebrew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent...)"

更新homebrew

$ brew update

homebrew被墙以后brew的更新出奇的慢,所以我放弃了更新转向重新安装
卸载brew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent...)"

第二种安装brew的方法(一般安装在/usr/local目录下)

$ cd /usr/local
$ mkdir homebrew && curl -L https://github.com/Homebrew/b... | tar xz --strip 1 -C homebrew

至此homebrew就重新配置完毕了,并重新安装一下ruby

$ brew install ruby

ruby

cocoapods主要是通过ruby的gem安装更新。我们需要先将ruby替换成国内的镜像,不然被墙速度感人。ruby最近出了ruby china官方镜像,需要先删去原来的镜像,再添加新的镜像

$ gem sources --remove https://rubygems.org/ //等有反应之后再敲入以下命令 
$ gem sources -a https://gems.ruby-china.org/

检查一下镜像

$ gem sources -l
*** CURRENT SOURCES *** 
https://gems.ruby-china.org/

使用gem安装cocoapods

$ sudo gem install cocoapods 

如果出现权限问题,则使用下面的语句

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

cocoapods配置

cocoapods在第一次运行时会自动执行指令pod setup,被墙的话这个过程会非常慢,而且通常会以超时连接中断报错为结尾。这个部分我折腾了很久,试了很多种教程,终于找到了一个成功的。我的方法是这样的:

更改pod初始化的git地址
这一步非常重要!!!在很多的教程中都只是让更换下载源,但其实在pod setup的时候它还是会更改.git文件中git的url为原来的源并重新初始化。被折磨了很多次,网速本来就很感人了T T。而且语句pod repo add master https://git.oschina.net/akuandev/Specs.git在当前并不能有效执行,会要求你必须通过pod setup执行初始化

$ cd /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command #此处的cocoapods-1.1.1处填入你的当前版本
$ sudo vim setup.rb 
#单击'a',进入编辑模式
 def run
      UI.section 'Setting up CocoaPods master repo' do
        if master_repo_dir.exist?
          set_master_repo_url
          set_master_repo_branch
          update_master_repo
        else
          add_master_repo
        end
      end

      UI.puts 'Setup completed'.green
    end

    // 省略一些代码 ....

    def self.read_only_url
      'https://github.com/CocoaPods/Specs.git'  
      //如果 pod repo add master                     https://git.coding.net/CocoaPods/Specs.git 这句失败的话
      //可以尝试直接把这个url改为你要更换的新的git 地址
      //此处为'https://code.aliyun.com/Magi/CocoaPods'
    end

更改结束后按esc退出,输入:wq!敲回车保存修改

再执行指令

$ git clone https://code.aliyun.com/Magi/CocoaPods ~/.cocoapods/repos/master
$ pod setup

这个过程比较漫长,因为github本身就慢,而且Spec.git的文件数量甚多(1069459+)),导致300+m的git库特别难下载成功。要保证流畅的网络连接

至此cocoapods已经完全安装完成了,鉴于每一次pod install的时候都会检查cocoapods的spec.git是否是最新的,可以使用指令pod install --verbose加快安装

cocoapods快速上手

cd进入需要创建podfile的项目的目录

$ pod init
$ touch podfile

具体如何编辑podfile请参考cocoapods官网
下面为一个podfile示例

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
#一定要添上这一行,否则还是会从https://github.com/CocoaPods/Specs.git下载
source 'https://code.aliyun.com/Magi/CocoaPods.git'
#此处填写项目名称
target ‘projectName’ do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!a
    pod 'AFNetwork'
end

安装项目依赖文件

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

可以运行项目啦!