CocoaPods是OS X和iOS下的一個第三類庫管理工具,通過CocoaPods工具我們可以為項目添加被稱為“Pods”的依賴庫,輕松管理第三方庫的版本。
CocoaPods安裝步驟
1. 查看Ruby版本,升級Ruby環(huán)境
CocoaPods是基于ruby ecosystem的,需要ruby環(huán)境,使用ruby的gem命令。所以我們的系統(tǒng)要有ruby環(huán)境。然而Mac系統(tǒng)默認會安裝好ruby環(huán)境。可在終端ruby -v查看ruby版本:
先查看一下ruby的版本
//查看ruby版本
ruby -v 或者 ruby --version
//輸出信息
ruby 2.3.3p222 (2016-11-21 revision 56859) [universal.x86_64-darwin17]
看能不能直接升級系統(tǒng)的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
則執(zhí)行
sudo gem install -n /usr/local/bin cocoapods
2. 更換Ruby鏡像
gem sources -l查看ruby源

發(fā)現(xiàn)這是國外的源,在中國是被屏蔽了的,所以要替換為國內(nèi)的源
移除國外的源
gem sources --remove https://rubygems.org/添加國內(nèi)的源
gem sources -a https://gems.ruby-china.org/現(xiàn)在.org停止訪問了,要換成
gem sources -a https://gems.ruby-china.com/
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.
說明是一些系統(tǒng)權(quán)限的原因,換成
sudo gem install -n /usr/local/bin cocoapods就行了。

錯誤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每次查找類庫是從本地查找的,如果要保持查找到的類庫是最新的,需要更新索引倉庫。這個過程會比較慢。
然后你會看到出現(xiàn)了Setting up CocoaPods master repo,卡住不動了,說明Cocoapods在將它的信息下載到 ~/.cocoapods里。 你可以command+n新建一個終端窗口,執(zhí)行cd ~/.cocoapods/進入到該文件夾下,然后執(zhí)行du -sh *來查看文件大小,每隔幾分鐘查看一次,這個目錄最終大小是900多M(我的是930M) 當出現(xiàn)Setup completed的時候說明已經(jīng)完成了。

5. 查看pod版本
pod --version
6. 查找第三方庫
輸入pod search AFNetworking,則能查找到相應(yīng)第三方庫,按q即可退出。如下:

如果搜索不到,可執(zhí)行如下兩種方案:

解決方案一:
直接找個demo,執(zhí)行pod init,生成pod文件之后,雙擊打開Podfile文件,隨便填寫一個庫進去,如 pod 'SnapKit', '~> 5.0.0',然后執(zhí)pod install,等這個庫安裝好之后,再去執(zhí)行pod search xxx 命令,這時候所有庫都能搜到了。
解決方案二:
1、請先進行:pod setup
2、再清空一下搜索索引,讓pod重建索引:
rm ~/Library/Caches/CocoaPods/search_index.json
這是因為之前pod search的時候生成了緩存文件search_index.json
然后再次輸入pod search AFNetworking進行搜索
7. 創(chuàng)建Podfile文件
新建一個工程,cd到工程根目錄下,pod init會創(chuàng)建一個podfile文件,
vim Podfile,按i進入編輯模式,ESC退出編輯,然后冒號,再wq就可以退出podfile文件了。
雙擊podfile文件,直接粘貼第三方庫內(nèi)容進去,保存。
用cocoapods 導(dǎo)入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文件中的類庫,如圖

執(zhí)行完成之后,工程根目錄下就會出現(xiàn)一個.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
解決方案一:
這里貼了幾種網(wǎng)上的解決方式 (有沒有效不知道,畢竟我沒用到這些方式解決)
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了??赡苁蔷W(wǎng)絡(luò)問題(網(wǎng)上也有說是網(wǎng)絡(luò)問題的)。
目前我就是用這種方式解決的。
9. 查看項目中引入庫的版本號
1、打開終端,cd命令切換到項目中的Podfile.lock文件目錄下(一般也就是項目根目錄),
執(zhí)行命令:cat Podfile.lock 即可。
2、也可以用文本方式打開 Podfile.lock 文件。

******* 擴展 *******
1、 再swift項目中引入OC庫,需要創(chuàng)建一個橋接文件
1. command + n 選擇Header File,取一個名字,比如BridgingHeader.h
2.配置橋接文件路徑(路徑也可以在前面加上$(SRCROOT)/作為相對路徑),如圖:

2 、配置Search Paths
我們在橋接文件導(dǎo)入第三方庫頭文件的時候,發(fā)現(xiàn)報錯,提示找不到頭文件,這是因為pod的文件和橋接header文件不是在同一個目錄下面,所以需要配置User Header Search Paths。
在target->Build Setting里面找到search Paths,雙擊User Header Search Paths后面空白的地方,設(shè)置目錄的路徑${SRCROOT},然后選擇后面的recursive,如圖:

這樣,在橋接文件里就可以成功的導(dǎo)入第三方庫的頭文件了。
錯誤:
用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)

如果輸入
sudo gem install cocoapods --pre執(zhí)行失敗,可以輸入sudo gem install -n /usr/local/bin cocoapods --pre,如下:
ruby官網(wǎng):https://gems.ruby-china.com/