AppleiOS开发零散知识

CocoaPods相关 | CocoaPods 使用

2018-05-29  本文已影响67人  JasonL

一. CocoaPods的介绍

什么是CocoaPodsCocoaPods是一个负责管理iOS项目中第三方开源库的工具,CocoaPods的项目源码在https://github.com/CocoaPods/Specs上管理。

经过CocoaPods团队的不懈努力,2016年5月10号,CocoaPods终于在其官方博客上宣布正式发布CocoaPods 1.0。与此同时,公开了相应的Mac版App——CocoaPods App 1.0

CocoaPods App 1.0 的下载地址:https://cocoapods.org/app

二. CocoaPods的安装

1. 替换ruby源

CocoaPods是基于ruby ecosystem的,需要ruby环境,使用ruby的gem命令。所以我们的系统要有ruby环境。然而Mac系统默认会安装好ruby环境。可在终端ruby -v查看ruby版本:

//查看ruby版本
ruby -v
//输出信息
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]

查看ruby源

gem sources -l

默认情况下,终端会显示下面:

*** CURRENT SOURCES ***
https://rubygems.org/

当然这个源在墙内是访问不到的,所以要更换到ruby-china的镜像

// 1.移除掉原有的源
gem sources --remove https://rubygems.org/
//2.淘宝的源已经不更新维护了,现在使用ruby-china的源哦
gem source -a https://gems.ruby-china.org
以下命令添加淘宝的源:(不建议继续使用)
gem sources -a https://ruby.taobao.org/
// 3.验证是否替换成功
gem sources -l

如果显示下面输出就说明正确:

*** CURRENT SOURCES ***
https://gems.ruby-china.org

2. 更新升级 Gem 版本

Gem是管理Ruby库和程序的标准包,如果它的版本过低也可能导致安装失败,解决方案自然是升级Gem,执行下述命令即可:

// 更新升级gem,国内需要切换源
sudo gem update --system

查看gem版本

gem -v
2.6.14

3. 安装CocoaPods

OS X 10.11 以前安装命令为:

sudo gem install cocoapods// 安装cocoapods

Mac系统为OS X EL Capitan安装命令为:

//安装最新版本
sudo gem install -n /usr/local/bin cocoapods

//安装指定版本
sudo gem install -n /usr/local/bin cocoapods -v 1.0.0 

//安装最新的release beta版本
sudo gem install -n /usr/local/bin cocoapods --pre 

如果你想卸载CocoaPods

//卸载CocoaPods
sudo gem uninstall cocoapods

4. 更新Podspec索引文件

如果按照上面3个步骤没问题,用命令pod --version查看是否安装成功,如果成功会显示pod的版本。

pod setup作用:将所有第三方的Podspec索引文件更新到本地的~/.cocoapods/repos目录下

pod安装成功之后一个首先的操作就是执行命令(不是必须的):

pod setup

所有的第三方开源库的Podspec文件都托管在https://github.com/CocoaPods/Specs

我们需要把这个Podspec文件保存到本地,这样才能让我们使用命令pod search 开源库搜索一个开源库,怎样才能把github上的Podspec文件保存本地呢?那就是 pod setup

执行pod setup时,CocoaPods 会将第三方的podspec索引文件更新到本地的~/.cocoapods/repos目录下

但是第一次执行pod setup时,这个github的Podspec索引文件比较大,有 300M 左右(以后会越来越大的),所以第一次更新时非常慢.要耐心等待......可以进去目录~/.cocoapods/repos使用命令du -sh *来查看下载文件的大小了

怎么才能快点呢?网上好多给出都是更换索引库的镜像,gitcafe
和oschina, gitcafe已经被coding收购了(2016年3月份左右收购)。这两个我亲测,现在都不行了(可能是我网速不好,基本上就是连接失败,有空网速好点的时候我在测试一下)。所以还是别更换 CocoaPods 索引库的镜像了。

三. CocoaPods的使用

1. 新建 Podfile文件

使用时需要在你的项目根目录下新建一个名为Podfile的文件(文件名一定为Podfile,不能更改),将依赖的库名字依次列在文件中即可.

//进入项目的根目录
cd ~/Desktop/Projects/JYCocoaPodsTest
//新建一个名为Podfile的文件
touch Podfile

2. 编辑 Podfile文件

CococaPods升级到1.0.0版本之后,Podfile文件的格式也发生了很大改变
我来带领大家写一个完整的Podfile文件 ,各个选项的解释在文件后面一起解释。

假设我们的项目名称为JYCocoaPodsTest, 为JYCocoaPodsTest新建了一个UITarget。打开JYCocoaPodsTest.xcodeproj结构如下:

image

1. 简单的Podfile:

platform :ios, '7.0'
inhibit_all_warnings!

xcodeproj 'JYCocoaPodsTest'

workspace 'JYCocoaPodsTest'
use_frameworks!

target 'JYCocoaPodsTest' do
  pod 'AFNetworking',
  pod 'JYCarousel', '0.0.1'
end

2. 稍微复杂的Podfile:

source 'ssh://git@gitlab.9ijx.com:9830/iOS/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '7.0'
use_frameworks!
inhibit_all_warnings!

workspace 'JYCocoaPodsTest'

target 'JYCocoaPodsTest' do

pod 'AFNetworking'

pod 'JYCarousel', '0.0.1'

pod 'WCJCache', :git => "http://gitlab.9ijx.com/iOS/WCJCache.git"

target :JYCocoaPodsTestUITests do
    inherit! :search_paths
    pod 'YYText'

end

end

3. Podfile的语法解释:

1. platform :iOS, '7.0'

2. inhibit_all_warnings!

pod 'JYCarousel', :inhibit_warnings => true

3. xcodeproj,现在被project代替,这个变量就别使用了

4. use_frameworks!
使用frameworks动态库替换静态库链接
(1)swift项目cocoapods 默认 use_frameworks!
(2)OC项目cocoapods 默认 #use_frameworks!

**5. workspace **

6. project

5. target 'xxxx' do
** end**

6. inherit! :search_paths

7. source

source 'ssh://git@gitlab.9ijx.com:9830/iOS/Specs.git'
source 'https://github.com/CocoaPods/Specs.git'

4. 依赖库的基本写法:

pod '库名', //不显式指定依赖库版本,表示每次都获取最新版本
pod '库名', '0.01'//只使用0.0.1版本
pod '库名', '>0.0.1' //使用高于0.0.1的版本
pod '库名', '>=0.0.1' //使用大于或等于0.0.1的版本
pod '库名', '<0.0.2' //使用小于0.0.2的版本
pod '库名', '<=0.0.2' //使用小于或等于0.0.2的版本
pod '库名', '~>0.0.1' //使用大于等于0.0.1但小于0.1的版本,相当于>=0.0.1&&<0.1
pod '库名', '~>0.1' //使用大于等于0.1但小于1.0的版本
pod '库名', '~>0' //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

5. 依赖库的自定义写法
下面都会用到podspec文件,所以要熟悉这个文件的构成才可以.
我会在下一篇博客编辑这个文件

pod '库名', :path => '/Users/Dely/Desktop/JYCarousel'

我新建一个工程PodTest来演示
1.在podfile写好依赖路径

platform :ios, '7.0'
inhibit_all_warnings!
workspace 'PodTest'
target 'PodTest' do
 pod 'JYCarousel', :path => '/Users/Dely/Desktop/JYCarousel'
end

2.在你的本地pod库添加xxx.podspec文件,(一定要注意是根目录添加

image


3.编辑xxx.podspec文件
主要下面红框点,修改成你的本地路径:

image

4.进入项目根目录进行安装pod install

image
使用仓库中的master分支:
pod '库名', :git => 'https://github.com/Delyer/JYCarousel.git'

使用仓库的其他分支:
pod '库名', :git => 'https://github.com/Delyer/JYCarousel.git' :branch => 'release'

使用仓库的某个tag:
pod '库名', :git => 'https://github.com/Delyer/JYCarousel.git', :tag => '0.0.1'

或者指定一个提交记录:
pod '库名', :git => 'https://github.com/Delyer/JYCarousel.git', :commit => '5e473f1e0530bb3799f2f0d70554b292570bd8f0'

需要特别注意的是,虽然这样将会满足任何在Pod中的依赖项通过其他Pods
但是 podspec必须存在于仓库的根目录 中,如果根目录中没有存在这个podspec文件,你将不得不使用下面提到的几种方式之一

  pod 'JSONKit', :podspec => 'https://example.com/JSONKit.podspec'

podspec
podspec :name => 'QuickDialog'
podspec :path => '/Documents/PrettyKit/PrettyKit.podspec'

上面的基本够我们日常使用。如果你还想了解更多。请到CocoaPods官方博客学习:https://guides.cocoapods.org

3. 安装依赖开源库

第二步中我们编辑好的Podfile文件保存好,进入项目根目录执行命令

//进入项目的根目录
cd ~/Desktop/Projects/JYCocoaPodsTest
//安装依赖库
pod install

image

pod install命令执行成功后,会看到项目根目录下多出xxx.xcworkspacePodfile.lock文件Pods目录。再看看刚才执行完pod install命令打印出来的内容的最后一行:From now on use CocoaPodsDemo.xcworkspace.提示我们从现在起,我们需要使用JYCocoaPodsTest.xcworkspace文件来开发。

4. 第三方库更新

pod install相似的一个命令就是pod update.
如果未指定特定版本的话,pod update将所有第三方框架更新到最新版本。

5. pod文件和命令说明

-----------------------------新增文件------------------------------
1. Podfile文件

项目的第三方库的依赖以及项目的基本配置

2. Podfile.lock文件
最后一次更新Pods时, 保存所有第三方框架的版本号

3. pods目录
保存通过pod install或者pod update下载下来的第三方开源库的源代码

4. xxx.xcworkspace文件
重新生成一个工作空间,打开这个工程文件来进行开发

-----------------------------常用指令------------------------------
1. pod setup

将所有第三方的Podspec索引文件更新到本地的~/.cocoapods/repos目录下,更新本地仓库。

2. pod repo update
执行 pod repo update更新本地仓库,本地仓库完成后,即可搜索到指定的第三方库,作用类似pod setup。不过这个命令经常不单独调用。比如执行pod setuppod searchpod installpod update会默认执行pod repo update

3. pod search xxx
查找某一个开源库。查找开源库之前,默认会执行pod repo update指令

4. pod list
列出所有可用的第三方库.现在已经2.4W+了.还在不断地增长

5. pod install

6. pod update

7. pod install --no-repo-update
8. pod update --no-repo-update

安装开源库之前, 不会执行pod repo update指令

四. CocoaPods相关的两个目录

image

如果我们使用pod search xxx 提示没有找到,但是我们这个第三方确实存在。
1.我们可以使用pod setup更新本地pod spec索引文件。然后pod search xxx
2.按照1的方法如果还是pod search xxx找不到,那我们就把~/Library/Caches/CocoaPods/的缓存文件删除。然后pod setup。最后pod search xxx这样应该就可以了

CocoaPods的常见错误:http://blog.csdn.net/wangyanchang21/article/details/51437934

Cocoapods(二)简单用法:https://www.jianshu.com/p/12e92fd0307a

上一篇下一篇

猜你喜欢

热点阅读