最近要接手项目的ios sdk,于是,抽时间学习一个cocoapods,用来管理Xcode项目的依赖的工具。

CocoaPods简介

CocoaPods是Xcode项目的依赖管理工具。通过Cocoapods你可以很方便的管理每个第三方库的版本,而且不需要我们做太多的配置。

CocoaPods将所有的项目依赖都集中在一个单独的podfile文本文件中,它会解析库之间的关系,获取生成的源代码,然后将其链接到xcode工作区中,用来构建项目。

CocoaPods最终的目的是通过创建一个更加集中的生态系统来提高第三方开源库的可发现性和参与度

安装CocoaPods

  1. 首先更新gem到最新的版本,在终端中输入如下命令:
   sudo gem update --system

正常情况下会安装成功,但是博主出现了如下错误:

   Installing RubyGems 2.7.7
   ERROR:  While executing gem ... (Errno::EPERM)
       Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem

这是因为没有权限,可以执行如下语句代替,安装完成后会显示Latest version already installed. Done.

   sudo gem update --system -n /usr/local/bin
  1. 变更镜像源,改用ruby-china的镜像源。如下:
   // 删除自带的ruby源
   gem sources --remove https://rubygems.org/
   // 添加ruby-china镜像
   gem sources -a https://gems.ruby-china.org/
   // 采用如下语句来检查镜像源替换成功
   gem sources -l
   *** CURRENT SOURCES ***
   https://gems.ruby-china.org/
   // 输出上述内容说明替换成功
  1. 安装CocoaPods
   sudo gem install cocoapods -n /usr/local/bin   // 和前面一样,不加-n 也是权限问题
  1. 待安装完成后,配置CocoaPods
   pod setup
   // 稍等片刻后,提示Setup completed表示设置完成
  1. 查找第三方库
   ➜  bin pod search JSONModel
   Creating search index for spec repo 'master'..
   -> JSONModel (1.7.0)
      Magical Data Modelling Framework for JSON. Create rapidly powerful, atomic and smart data
      model classes.
      pod 'JSONModel', '~> 1.7.0'
      - Homepage: http://www.jsonmodel.com
      - Source:   https://github.com/jsonmodel/jsonmodel.git
      - Versions: 1.7.0, 1.6.0, 1.5.1, 1.5.0, 1.4.2, 1.4.1, 1.4.0, 1.3.0, 1.2.0, 1.1.2, 1.1.0,
      1.0.2, 1.0.1, 1.0.0, 0.13.0, 0.12.0, 0.11.0, 0.10.0, 0.9.3, 0.9.2, 0.9.1, 0.9.0, 0.8.4,
      0.8.2, 0.8.1 [master repo]
  1. 升级CocoaPods

和安装一样的命令

   sudo gem install cocoapods -n /usr/local/bin
  1. 卸载CocoaPods
   sudo gem uninstall cocoapods

导入第三方库

创建一个新项目,名为test_cocoapods。

image-20180730203321331

终端打开cd到项目目录:

cd ~/test_cocoapods
nvim Podfile  // 编辑Podfile

这里nvim使用的是neovim,你也可以直接用vim,neovim可以参考我这篇博客,新手vim必备。SpaceVim Tutorial On Mac

输入如下配置文件到Profile中,引入JSONModel第三方库。

# 平台信息,版本
platform :ios, '8.0' 
# 项目名
target 'test_cocoapods' do

# 第三方库
pod 'JSONModel', '~> 1.7.0'
# ...
end

接下来运行pod install,如下表面安装成功。

Analyzing dependencies
Downloading dependencies
Installing JSONModel (1.7.0)
Generating Pods project
Integrating client project

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

于是你的目录结构变成了如下,多了Pods文件夹,用来存放所有引用的第三方库。

.
├── Podfile
├── Podfile.lock
├── Pods
│   ├── Headers
│   ├── JSONModel
│   ├── Local\ Podspecs
│   ├── Manifest.lock
│   ├── Pods.xcodeproj
│   └── Target\ Support\ Files
├── test_cocoapods
│   ├── AppDelegate.h
│   ├── AppDelegate.m
│   ├── Assets.xcassets
│   ├── Base.lproj
│   ├── Info.plist
│   ├── ViewController.h
│   ├── ViewController.m
│   └── main.m
├── test_cocoapods.xcodeproj
│   ├── project.pbxproj
│   ├── project.xcworkspace
│   └── xcuserdata
├── test_cocoapods.xcworkspace
│   └── contents.xcworkspacedata
├── test_cocoapodsTests
│   ├── Info.plist
│   └── test_cocoapodsTests.m
└── test_cocoapodsUITests
    ├── Info.plist
    └── test_cocoapodsUITests.m

使用第三方库

在文件中加入头文件:

#import <JSONModel/JSONModel.h>
// 如此即可

第三方库的增加、更新和删除

首先利用pod search搜索新的第三方库,然后在Podfile中新增,最后运行pod install进行安装

更新的话,使用终端命令pod update即可

删除的话,在Profile中删除,然后执行pod update或者pod install即可。

项目中删除Cocoapods

删除CocoaPods相关文件即可,如下:

├── Podfile
├── Podfile.lock
├── Pods
│   ├── Headers
│   ├── JSONModel
│   ├── Local\ Podspecs
│   ├── Manifest.lock
│   ├── Pods.xcodeproj
│   └── Target\ Support\ Files

参考

CocoaPods官方使用指南

CocoaPods-xcode-plugin插件