CocoaPods1.4.0 安裝使用詳解

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源

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

發(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/
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.
說明是一些系統(tǒng)權(quán)限的原因,換成
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每次查找類庫是從本地查找的,如果要保持查找到的類庫是最新的,需要更新索引倉庫。這個過程會比較慢。
然后你會看到出現(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)完成了。

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

5. 查看pod版本

pod --version

6. 查找第三方庫

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

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

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

image.png

解決方案一:
直接找個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文件中的類庫,如圖

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

執(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 文件。


image.png


******* 擴展 *******

1、 再swift項目中引入OC庫,需要創(chuàng)建一個橋接文件

1. command + n 選擇Header File,取一個名字,比如BridgingHeader.h
2.配置橋接文件路徑(路徑也可以在前面加上$(SRCROOT)/作為相對路徑),如圖:

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

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,如圖:


image.png

這樣,在橋接文件里就可以成功的導(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

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

如果輸入sudo gem install cocoapods --pre執(zhí)行失敗,可以輸入sudo gem install -n /usr/local/bin cocoapods --pre,如下:
DABEE211-8304-4BAF-A0C2-57EAEA683B72.png

ruby官網(wǎng):https://gems.ruby-china.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • CocoaPods 是什么? CocoaPods 是一個負責管理 iOS 項目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,978評論 3 50
  • 項目組件化、平臺化是技術(shù)公司的共同目標,越來越多的技術(shù)公司推崇使用pod管理第三方庫以及私有組件,一方面使項目架構(gòu)...
    swu_luo閱讀 22,827評論 0 39
  • 9/29 23:50 轉(zhuǎn)眼已度過了一月,但我仍然沒從剛畢業(yè)的感覺中脫離出來,好像這都是夢。慢慢相處下來,一些事情有...
    七月飛雪閱讀 256評論 0 1
  • 北風寒,北風寒,風寒人心暖。 俏佳人,情緣到,今生一世花月圓。 今朝醉,明日情,廝守一生至永恒。 北風寒,北風寒,...
    池灬魚閱讀 527評論 0 2
  • 李娟《冬牧場》 李娟給人的感覺很像三毛,知性美(?)女,異域風情,身邊故事,生活情趣。 區(qū)別是,埃及撒哈拉和新疆阿...
    框框之上閱讀 592評論 0 1

友情鏈接更多精彩內(nèi)容