常用命令總結(jié)寫在前面,具體分析往下看
# 檢索框架
pod search 框架名關(guān)鍵字
# 創(chuàng)建項(xiàng)目,并cd到工程文件所在目錄,創(chuàng)建Podfile文件
pod init
# pod install和pod update的選擇(CocoaPods1.0.1之后)
# 安裝框架,不會(huì)直接更新repo庫
pod install
# 更新框架,如果不加--no-repo-update,默認(rèn)會(huì)更新repo庫
pod update [--verbose] --no-repo-update
Podfile文件內(nèi)容(建議使用Xcode進(jìn)行編輯)
# 支持的iOS系統(tǒng)的最低版本
platform:ios,'8.0'
# 忽略引入庫的所有警告(強(qiáng)迫癥者的福音啊)
inhibit_all_warnings!
# 使用framework(包含swift庫就必須使用此設(shè)置,純OC庫可以不設(shè)置)
use_frameworks!
# 下面兩行是指明依賴庫的來源地址
source 'https://gitclub.cn/CocoaPods/Specs.git'
source '你自己的私有庫鏡像源'
# 做一些安裝之前的更改
pre_install do |installer|
...
end
# 依賴目標(biāo)一般為項(xiàng)目名稱
# 針對(duì)MyApp target引入AFNetworking
# 針對(duì)MyAppTests target引入OCMock,
target 'MyApp' do
pod 'AFNetworking', '~> 3.0'
target 'MyAppTests' do
# ???
inherit! :search_paths
pod 'OCMock', '~> 2.0.1'
end
end
# ----------------以下命令一般采取系統(tǒng)默認(rèn)設(shè)置,無特別需求無需設(shè)置----------------
# install! 這個(gè)命令是cocoapods聲明的一個(gè)安裝命令,用于安裝引入Podfile里面的依賴庫
install! 'cocoapods',
:deterministic_uuids => false,
:integrate_targets => false
# 默認(rèn)情況下,我們不需要指定,直接使用與Podfile所在目錄的工程名一樣就可以了。如果要指定另外的名稱,而不是使用工程的名稱,可以這樣指定
workspace 'MyWorkspace'
# 作用于哪個(gè)工程
project 'MyProject'
# 這個(gè)是cocoapods的一些配置,官網(wǎng)并沒有太詳細(xì)的說明,一般采取默認(rèn)就好了,也就是不寫.
post_install do |installer|
installer.pods_project.targets.each do |target|
puts target.name
end
end
# ----------------以上命令一般采取系統(tǒng)默認(rèn)設(shè)置,無特別需求無需設(shè)置----------------
Cocopods工作原理圖

Cocopods工作原理.png
檢索第三方框架
- 檢索命令
pod search 框架關(guān)鍵字
- 命令作用:從
本地緩存的第三方框架描述信息生成的檢索文件中檢索相關(guān)框架的信息 - 遇到的問題
- 問題描述:
Unable to find a pod with name, author, summary, or description matching 'xxx' - 解決方案:刪除cocoapods索引文件
sudo rm ~/Library/Caches/CocoaPods/search_index.json - 問題描述:
安裝第三方框架
- 使用Xcode新建一個(gè)工程
- 打開終端,
cd到工程目錄下 - 生成
Podfile文件-
Podfile文件是使用ruby語法編寫的框架依賴描述文件,就是告訴cocoapods需要下載哪些框架 -
Podfile文件配置語法詳見Podfile語法參考(譯) - 創(chuàng)建命令:
pod init - 使用
Xcodeorvim編輯器編輯Podfile文件 - 在終端中使用
vim編輯器編輯Podfile步驟-
vi podfile在vim編輯器中打開podfile文件 - 按
i鍵進(jìn)入編輯模式 - 編輯完成后,按
esc鍵退出編輯模式 - 按
:wq組合鍵并回車退出vim編輯器 - 記得在Podfile文件的頂部加入下面的repo源地址:
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' -
- Podfile示例
# 指定的repo鏡像源 source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' # 最低支持的iOS版本 platform :ios, '8.0' # 依賴目標(biāo)一般為項(xiàng)目名稱 target '依賴目標(biāo)' do # 以framework的形式使用第三方庫 use_frameworks! pod 'AFNetworking', '~> 3.0' # 網(wǎng)絡(luò)庫 pod 'SDWebImage', '~>3.8' # 圖片加載 pod 'SVProgressHUD' # Loading框 + 提示框 pod 'MJRefresh' # 下拉刷新 pod 'HandyFrame' # 使用frame布局 pod 'YYModel' # 模型轉(zhuǎn)換 end
-
- 安裝框架
// --verbose表示打印詳細(xì)信息 // --no-repo-update表示不更新本地框架信息源 // 安裝框架,此命令在新版本中不會(huì)更新索引庫 pod install // 更新框架,防止更新索引庫 pod update [--verbose] --no-repo-update - 遇到的問題
- 問題描述:
The dependency 'SSZipArchive', '~> 1.6.2' is not used in any concrete target. - 解決方案:指定依賴目標(biāo)
- 從cocoapods 1.0.1
及后續(xù)版本必須明確指定依賴目標(biāo)
# 依賴目標(biāo)一般為項(xiàng)目名稱 target '依賴目標(biāo)' do# target數(shù)組 如果有新的target直接加入該數(shù)組 targetsArray = ['targetName1', 'targetName2', 'targetName3'] # 循環(huán)指定公用的庫 targetsArray.each do |t| target t do pod 'MJRefresh', '~> 1.4.6' pod 'Masonry', '~> 0.6.1' end end # 指定額外依賴的不同的三方庫 target 'targetName1' do pod 'xxx1' pod 'xxx2' end target 'targetName2' do pod 'xxx3' end - 問題描述:
- 安裝完后生成的文件
-
Podfile.lock文件:記錄上一次下載的框架的版本號(hào) -
*.xcworkspace文件:工作區(qū)文件
-
- 以后要添加新的庫,就編輯
Podfile文件,cd到工程根目錄下,然后執(zhí)行pod install --no-repo-update命令就可以了 -
pod install和pod update在沒有指定框架版本號(hào)時(shí)是有區(qū)別的-
pod install在Podfile.lock文件存在時(shí)直接讀取并下載框架,如果是團(tuán)隊(duì)開發(fā)為了保證版本一致,建議使用此命令 -
pod update直接讀取Podfile文件中的信息,不管Podfile.lock文件是否存在,所以在團(tuán)隊(duì)開發(fā)時(shí)可能導(dǎo)致大家使用的第三方庫的版本不一致
-
-
pod install和pod update選擇- 一般情況下,
第一次從共享庫把項(xiàng)目下載下來之后,應(yīng)該使用pod install命令安裝,而不是選擇pod update,目的是為了保證大家使用的第三方框架版本一致 - 如果以后大家需要升級(jí)第三方框架,那么大家
約定好,統(tǒng)一再執(zhí)行一次pod update -
建議在編寫podfile文件時(shí),明確指定第三方庫的版本,格式如下:pod '第三方庫名稱', '~> 版本號(hào)',這樣不管使用pod install還是pod update效果都是一致的
- 一般情況下,