CocoaPods1.4.0 安装使用详解

CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库,轻松管理第三方库的版本。

CocoaPods安装步骤

1. 查看Ruby版本,升级Ruby环境

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

//查看ruby版本
ruby -v 或者 ruby --version
//输出信息
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]

看能不能直接升级系统的gem
gem update --system
如果不行,看能不能直接更新rubygems
sudo gem install rubygems-update
如果失败

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

则执行
sudo gem install -n /usr/local/bin cocoapods

2. 更换Ruby镜像

gem sources -l查看ruby源

8089AA51-4E5B-4014-8A68-1E0943FCDFD9.png

发现这是国外的源,在中国是被屏蔽了的,所以要替换为国内的源
移除国外的源gem sources --remove https://rubygems.org/
添加国内的源gem sources -a https://gems.ruby-china.org/
现在.org停止访问了,要换成gem sources -a https://gems.ruby-china.com/
image.png

gem sources -l查看是否替换成功

*** CURRENT SOURCES ***

        https://gems.ruby-china.org/
3. 安装CocoaPods

sudo gem install cocoapods
报错1:
ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /usr/bin directory.
说明是一些系统权限的原因,换成
sudo gem install -n /usr/local/bin cocoapods就行了。

932A9DC9-A623-457E-95AB-14611FD45C90.png

错误2:
ERROR: Error installing cocoapods:
ERROR: Failed to build gem native extension.
解决方案一: https://stackoverflow.com/questions/20939568/error-error-installing-cocoapods-error-failed-to-build-gem-native-extension
没有安装brew的,自己搜索安装方法安装就行,这里不再赘述。
解决方案二: https://blog.csdn.net/a892445213/article/details/104837529
注意: 安装完rvm后,要重新开启一个终端,rvm命令才生效。

目前我使用方案二才解决的问题。

4. 更新索引仓库

pod setup把最新的类库信息拉取到本地spec文件,因为CocoaPods每次查找类库是从本地查找的,如果要保持查找到的类库是最新的,需要更新索引仓库。这个过程会比较慢。
然后你会看到出现了Setting up CocoaPods master repo,卡住不动了,说明Cocoapods在将它的信息下载到 ~/.cocoapods里。 你可以command+n新建一个终端窗口,执行cd ~/.cocoapods/进入到该文件夹下,然后执行du -sh *来查看文件大小,每隔几分钟查看一次,这个目录最终大小是900多M(我的是930M) 当出现Setup completed的时候说明已经完成了。

66BE7170-B519-4E12-9670-DA77EE7082FB.png

5. 查看pod版本

pod --version

6. 查找第三方库

输入pod search AFNetworking,则能查找到相应第三方库,按q即可退出。如下:

FBEC6FEA-035B-4BF4-9BE5-0F05753D30AA.png

如果搜索不到,可执行如下两种方案:

image.png

解决方案一:
直接找个demo,执行pod init,生成pod文件之后,双击打开Podfile文件,随便填写一个库进去,如 pod 'SnapKit', '~> 5.0.0',然后执pod install,等这个库安装好之后,再去执行pod search xxx 命令,这时候所有库都能搜到了。

解决方案二:
1、请先进行:pod setup
2、再清空一下搜索索引,让pod重建索引:
rm ~/Library/Caches/CocoaPods/search_index.json
这是因为之前pod search的时候生成了缓存文件search_index.json
然后再次输入pod search AFNetworking进行搜索

7. 创建Podfile文件

新建一个工程,cd到工程根目录下,pod init会创建一个podfile文件,
vim Podfile,按i进入编辑模式,ESC退出编辑,然后冒号,再wq就可以退出podfile文件了。
双击podfile文件,直接粘贴第三方库内容进去,保存。
用cocoapods 导入swift 框架,必须要 use_frameworks!。
use_frameworks!使用 dynamic frameworks 来取代 static libraries 方式.

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target 'SwiftUIDemo' do
pod 'MJRefresh', '~> 3.1.15.3'
pod 'Alamofire', '~> 4.7.1'
pod 'SDWebImage', '~> 4.3.3'
end
8. 安装第三方库

pod install安装所有再podfile文件中的类库,如图

C6DE5A21-86D1-4540-AE1F-8C2BD8645A08.png

执行完成之后,工程根目录下就会出现一个.xcworkspace的文件,点击就能打开工程了。

可能遇到的错误:
1. fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed
pod install 报错

[!] Error installing ZXingObjC
[!] Failed to download 'ZXingObjC': [!] /usr/bin/git clone https://github.com/zxingify/zxingify-objc.git /var/folders/v6/439mq3hd2nxdx0lgjv96gct00000gn/T/d20210516-8148-91hem9 --template=
Cloning into '/var/folders/v6/439mq3hd2nxdx0lgjv96gct00000gn/T/d20210516-8148-91hem9'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: the remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

或 git clone --recurse-submodules xxx 时失败报错

remote: Compressing objects: 100% (2725/2725), done.
fatal: the remote end hung up unexpectedly5.43 MiB | 149.00 KiB/s
fatal: early EOF
fatal: index-pack failed

解决方案一:
这里贴了几种网上的解决方式 (有没有效不知道,毕竟我没用到这些方式解决)
https://www.cnblogs.com/li923/p/13277725.html
https://www.cnblogs.com/new0801/p/6175788.html
https://stackoverflow.com/questions/21277806/fatal-early-eof-fatal-index-pack-failed
解决方案二:
重新克隆一遍,就ok了。可能是网络问题(网上也有说是网络问题的)。
目前我就是用这种方式解决的。

9. 查看项目中引入库的版本号

1、打开终端,cd命令切换到项目中的Podfile.lock文件目录下(一般也就是项目根目录),
执行命令:cat Podfile.lock 即可。
2、也可以用文本方式打开 Podfile.lock 文件。


image.png


******* 扩展 *******

1、 再swift项目中引入OC库,需要创建一个桥接文件

1. command + n 选择Header File,取一个名字,比如BridgingHeader.h
2.配置桥接文件路径(路径也可以在前面加上$(SRCROOT)/作为相对路径),如图:

18830CF8-DB53-409B-88F8-E5C2AE89661D.png

2 、配置Search Paths

我们在桥接文件导入第三方库头文件的时候,发现报错,提示找不到头文件,这是因为pod的文件和桥接header文件不是在同一个目录下面,所以需要配置User Header Search Paths。
在target->Build Setting里面找到search Paths,双击User Header Search Paths后面空白的地方,设置目录的路径${SRCROOT},然后选择后面的recursive,如图:


image.png

这样,在桥接文件里就可以成功的导入第三方库的头文件了。

错误:

用Xcode10和pod1.5.3,报错
RuntimeError - [!] Xcodeproj doesn't know about the following attributes {"inputFileListPaths"=>[], "outputFileListPaths"=>[]} for the 'PBXShellScriptBuildPhase' isa.
解决方案:(https://stackoverflow.com/questions/52199554/cocoapods-with-xcode-10-runtimeerror-xcodeproj-doesnt-know-about-the-following)

E97F4AC0-61EF-4A1F-808B-74E60FDA94EF.png

如果输入sudo gem install cocoapods --pre执行失败,可以输入sudo gem install -n /usr/local/bin cocoapods --pre,如下:
DABEE211-8304-4BAF-A0C2-57EAEA683B72.png

ruby官网:https://gems.ruby-china.com/

你可能感兴趣的:(CocoaPods1.4.0 安装使用详解)