CocoaPods是OS X和iOS下的一個(gè)第三類庫管理工具,通過CocoaPods工具我們可以為項(xiàng)目添加被稱為“Pods”的依賴庫驳糯,輕松管理第三方庫的版本东抹。
CocoaPods安裝步驟
1. 查看Ruby版本帕识,升級(jí)Ruby環(huán)境
CocoaPods是基于ruby ecosystem的潜腻,需要ruby環(huán)境,使用ruby的gem命令咖祭。所以我們的系統(tǒng)要有ruby環(huán)境掩宜。然而Mac系統(tǒng)默認(rèn)會(huì)安裝好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]
看能不能直接升級(jí)系統(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
報(bào)錯(cuò)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
就行了码耐。
錯(cuò)誤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后敦间,要重新開啟一個(gè)終端,rvm命令才生效束铭。
目前我使用方案二才解決的問題廓块。
4. 更新索引倉庫
pod setup
把最新的類庫信息拉取到本地spec文件,因?yàn)镃ocoaPods每次查找類庫是從本地查找的契沫,如果要保持查找到的類庫是最新的带猴,需要更新索引倉庫。這個(gè)過程會(huì)比較慢懈万。
然后你會(huì)看到出現(xiàn)了Setting up CocoaPods master repo拴清,卡住不動(dòng)了,說明Cocoapods在將它的信息下載到 ~/.cocoapods里会通。 你可以command+n新建一個(gè)終端窗口口予,執(zhí)行cd ~/.cocoapods/進(jìn)入到該文件夾下,然后執(zhí)行du -sh *來查看文件大小涕侈,每隔幾分鐘查看一次苹威,這個(gè)目錄最終大小是900多M(我的是930M) 當(dāng)出現(xiàn)Setup completed的時(shí)候說明已經(jīng)完成了。
5. 查看pod版本
pod --version
6. 查找第三方庫
輸入pod search AFNetworking
驾凶,則能查找到相應(yīng)第三方庫牙甫,按q即可退出。如下:
如果搜索不到调违,可執(zhí)行如下兩種方案:
解決方案一:
直接找個(gè)demo窟哺,執(zhí)行pod init
,生成pod文件之后技肩,雙擊打開Podfile文件且轨,隨便填寫一個(gè)庫進(jìn)去,如 pod 'SnapKit', '~> 5.0.0'
虚婿,然后執(zhí)pod install
旋奢,等這個(gè)庫安裝好之后,再去執(zhí)行pod search xxx
命令然痊,這時(shí)候所有庫都能搜到了至朗。
解決方案二:
1、請先進(jìn)行:pod setup
2剧浸、再清空一下搜索索引锹引,讓pod重建索引:
rm ~/Library/Caches/CocoaPods/search_index.json
這是因?yàn)橹皃od search的時(shí)候生成了緩存文件search_index.json
然后再次輸入pod search AFNetworking進(jìn)行搜索
7. 創(chuàng)建Podfile文件
新建一個(gè)工程,cd到工程根目錄下唆香,pod init會(huì)創(chuàng)建一個(gè)podfile文件嫌变,
vim Podfile
,按i進(jìn)入編輯模式躬它,ESC退出編輯腾啥,然后冒號(hào),再wq就可以退出podfile文件了冯吓。
雙擊podfile文件倘待,直接粘貼第三方庫內(nèi)容進(jìn)去,保存桑谍。
用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í)行完成之后贞间,工程根目錄下就會(huì)出現(xiàn)一個(gè).xcworkspace
的文件,點(diǎn)擊就能打開工程了雹仿。
可能遇到的錯(cuò)誤:
1. fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed
pod install 報(bào)錯(cuò)
[!] 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 時(shí)失敗報(bào)錯(cuò)
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ǎng)絡(luò)問題(網(wǎng)上也有說是網(wǎng)絡(luò)問題的)。
目前我就是用這種方式解決的邑商。
9. 查看項(xiàng)目中引入庫的版本號(hào)
1摄咆、打開終端凡蚜,cd命令切換到項(xiàng)目中的Podfile.lock文件目錄下(一般也就是項(xiàng)目根目錄),
執(zhí)行命令:cat Podfile.lock 即可吭从。
2朝蜘、也可以用文本方式打開 Podfile.lock 文件。
******* 擴(kuò)展 *******
1涩金、 再swift項(xiàng)目中引入OC庫谱醇,需要?jiǎng)?chuàng)建一個(gè)橋接文件
1. command + n 選擇Header File,取一個(gè)名字步做,比如BridgingHeader.h
2.配置橋接文件路徑(路徑也可以在前面加上$(SRCROOT)/作為相對路徑)副渴,如圖:
2 、配置Search Paths
我們在橋接文件導(dǎo)入第三方庫頭文件的時(shí)候全度,發(fā)現(xiàn)報(bào)錯(cuò)煮剧,提示找不到頭文件,這是因?yàn)閜od的文件和橋接header文件不是在同一個(gè)目錄下面讼载,所以需要配置User Header Search Paths轿秧。
在target->Build Setting里面找到search Paths,雙擊User Header Search Paths后面空白的地方,設(shè)置目錄的路徑${SRCROOT},然后選擇后面的recursive咨堤,如圖:
這樣菇篡,在橋接文件里就可以成功的導(dǎo)入第三方庫的頭文件了。
錯(cuò)誤:
用Xcode10和pod1.5.3一喘,報(bào)錯(cuò)
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/