CocoaPods簡介:
CocoaPods是iOS項目的依賴管理工具,該項目源碼在Github上管理苍鲜。開發(fā)iOS項目不可避免地要使用第三方開源庫混滔,CocoaPods的出現(xiàn)使得我們可以節(jié)省設置和第三方開源庫的時間油湖。 在使用CocoaPods之前乏德,開發(fā)項目需要用到第三方開源庫的時候喊括,我們需要
1.把開源庫的源代碼復制到項目中
2.添加一些依賴框架和動態(tài)庫
3.設置-ObjC郑什,-fno-objc-arc等參數(shù)
4.管理他們的更新
在使用CocoaPods后蘑拯,我們只需要把用到的開源庫放到一個名為Podfile的文件中强胰,然后執(zhí)行pod install.Cocoapods就會自動將這些第三方開源庫的源碼下載下來偶洋,并且為我們的工程設置好響應的系統(tǒng)依賴和編譯參數(shù)玄窝。
一恩脂、CocoaPods的原理
CocoaPods的原理是將所有的依賴庫都放到另一個名為Pods的項目中,然后讓主項目依賴Pods項目浓领,這樣联贩,源碼管理工作都從主項目移到了Pods項目中泪幌。Pods項目最終會編譯成一個名為libPods.a的文件,主項目只需要依賴這個.a文件即可建芙。
二岁钓、Cocoapod的安裝:
1微王、ruby環(huán)境:
在安裝Cocoapod前要確認ruby是否正確安裝,可以用如下命令確認當前ruby環(huán)境:
??$ ruby -v
下面是我的的ruby環(huán)境:
ruby 2.3.7p456 (2018-03-28 revision 63024)
2罩旋、添加gem源
淘寶源:https://ruby.taobao.org/
China源最新域名:https://gems.ruby-china.com
淘寶源已經(jīng)停止維護了,現(xiàn)由 ruby-china 提供鏡像服務涨醋,可以使用China源作為gem源浴骂。
首先需要確認自己的gem源:
- 查看是否添加了gem源:
??$ gem sources -l
??https://gems.ruby-china.org/
如果添加了淘寶的源溯警,可以使用如下命令修改gem源:
?$ sudo gem sources --add https://gems.ruby-china.org/ --remove https://ruby.taobao.org/
ruby-china的域名已經(jīng)更新為.com,可以更新一下源:
$ sudo gem sources --add https://gems.ruby-china.com/ --remove https://gems.ruby-china.org/
如果沒有添加gem源,可以使用如下命令添加gem源:
??$ sudo gem sources --add https://gems.ruby-china.com
??添加完成后喳挑,確認當前gem源:
??$ gem sources -l
??https://gems.ruby-china.com
查看gem源版本:
??$ gem -v
??2.5.2.3
3伊诵、安裝Cocoa-pod
- gem 安裝 cocoapods
$ sudo gem install cocoapods --pre
$ sudo gem install cocoapods -v 1.4.0
- pod setup
此過程很是緩慢
??$ pod setup
??Setting up CocoaPods master repo
三、使用Cocoapod為工程導入第三方庫
1浙炼、為主工程生成Podfile
在工程的.xcodeproj目錄(必須在此目錄)中,執(zhí)行如下命令蜗帜,即可得到Podfile厅缺。
??$ pod init
2湘捎、編輯Podfile文件
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'POD_DEMO' do
# ~> 后面的數(shù)字是 3.2 版本窥妇,可以省略娩践,則安裝或升級最新版本
pod 'AFNetworking','~>3.2'
end
3翻伺、生成.xcworkspace工程入口
按照上面的步驟吨岭,在子工程下面添加完成podspec之后未妹,在主工程的Podfile對應目錄下執(zhí)行如下命令,即可得到對應的 *.xcworkspace工程入口族檬。
??$ pod install --no-repo-update
4单料、運行.xcworkspace啟動工程,可以看到工程已經(jīng)添加了pod
四扫尖、常用的Pod命令:
# 創(chuàng)建 Podfile 文件
pod init
# 下載“Podfile”中定義的所有依賴項,并創(chuàng)建一個pod庫
pod install
# 下載“Podfile”中定義的所有依賴項,并創(chuàng)建一個pod庫,不更新本地代碼庫
pod install --no-repo-update
# 更新Podfile中依賴的框架
pod update
# 更新Podfile中依賴的框架,可以安裝新框架或者刪除不用的框架换怖,但是不會升級項目已經(jīng)安裝的框架
pod update --no-repo-update
# 查看哪些框架有更新版本
pod outdated
# 搜索框架 #空格 下一頁 #q 退出
pod search AFNetworking
# 只搜索符合名字的框架
pod search AFNetworking --simple
# 幫助命令
pod --help
#其他命令的用法可以用 命令+ --help的方式查看用法幫助
五条摸、從工程中刪除Cocoapod:
刪除工程中的Cocoapod需要刪除下列文件:
- 刪除工程文件夾下的Podfile铸屉、Podfile.lock及Pods文件夾
- 刪除xcworkspace文件
- 使用.xcodeproj文件打開工程彻坛,刪除Frameworks組下的libPods.a引用以及Pods.xcconfig,以及殘留的pod文件夾昌屉。
- 刪除工程pod配置項 TARGET->Build Phases ->
[CP] Check Pods Manifest.lock
[CP] Copy Pods Resources
[CP] Embed Pods Frameworks
五怠益、制作自己的Cocoapod庫
pod網(wǎng)站: https://cocoapods.org
制作私有庫的基本步驟:
1.在github創(chuàng)建一個共有庫
2.clone到本地,在該文件夾內(nèi)創(chuàng)建一個新的項目
3.上傳到github上
4.創(chuàng)建或登錄trunk賬號
5.添加.podspec文件
6.podspec上傳到github
7.添加庫tag標記
8.驗證podspec文件
9.podspec上傳到Cocoapod中
10.更新本地倉庫
11.查看上傳結(jié)果
12.更新維護自己的庫
1.在github上創(chuàng)建一個共有庫:
如圖:
2.clone到本地,在該文件夾內(nèi)創(chuàng)建一個新的項目:
新建的項目一般會自帶一層目錄,可以將此目錄去掉,將準備公開的庫文件放在一個文件夾中,同LICENSE,README文件放在同一目錄下:
結(jié)果如圖:
3.上傳到github上
相關命令:
$ git add .
$ git commit -m "本次提交的具體內(nèi)容"
$ git push
4.創(chuàng)建或登錄trunk賬號
我們要讓用戶使用我們的的庫抢呆,就需要上傳到CocoaPod網(wǎng)站進行托管.而要上傳文件到CocoaPod笛谦,就要創(chuàng)建trunk賬戶.
4.1 檢測是否已經(jīng)登錄
$ pod trunk me
如果沒有那么創(chuàng)建用戶
4.2 創(chuàng)建pod trunk 用戶
pod trunk register youxiang@163.com "YourName"
4.3 查收郵件
收到郵件饥脑,點擊郵件的鏈接,會跳轉(zhuǎn)到一個頁面,提示驗證通過
執(zhí)行:$ pod trunk me
驗證一下
5.添加.podspec文件
我的代碼已經(jīng)提交到github上谣沸,還需要上傳到CocoaPod上乳附,.podspec文件就是幫助用戶搜索到我們制作的庫文件的描述文件.
創(chuàng)建.podspec文件有兩種方法
方法一:復制已經(jīng)較成熟的第三方庫的.podspec文件到你的項目中,然后將各種信息改成你自己的
下面是我的.podspec
Pod::Spec.new do |s|
s.name = "SKImageCodeTypeTool" //庫名字
s.version = "1.0.0" //庫版本號
s.ios.deployment_target = '6.0'
s.summary = "A picture encode format check" //庫的簡介
s.homepage = "https://github.com/emptyglass123/SKImageCodeTypeToolDemo" // 庫的github地址
s.license = "MIT" // license 創(chuàng)建git倉庫時勾選的
s.author = { "author" => "111111111@163.com" }// 庫的作者
s.social_media_url = "https://github.com/emptyglass123/SKImageCodeTypeToolDemo"
s.source = { :git => "https://github.com/emptyglass123/SKImageCodeTypeToolDemo", :tag => s.version }
s.source_files = "SKImageCodeTypeTool" // 暴露給用戶的庫文件所在文件夾
s.requires_arc = true // ARC
end
方法二:手動創(chuàng)建,先切到工程目錄,執(zhí)行命令
pod spec create 庫名
隨后會在當前目錄下生成一個庫名. podspec
文件,使用Xcode打開,編輯相關項:
完整文件目錄結(jié)構(gòu):
6.將. podspec文件上傳到github
git add .
git commit -m "添加了 .podspec文件"
git push
7.添加tag標記
git tag 1.0.0
git push --tags
這句話就是給我們的庫文件打tag,這個tag一定要和.podspec文件內(nèi)容一一對應举农,否則有問題
8.驗證podspec文件
我們?nèi)ヲ炞C自己的庫文件的時候敞嗡,這樣寫
pod spec lint
或者
pod spec lint SKImageCodeTypeTool.podspec
但是有的時候會有一些warning,然后就驗證失敗,所以我們此時可以
pod spec lint SKImageCodeTypeTool.podspec --allow-warnings
9.上傳到Cocoapod:
如果剛才驗證沃粗,沒有發(fā)現(xiàn)警告最盅,那么可以直接這個樣上傳
pod trunk push KImageCodeTypeTool.podspec
如果有警告涡贱,那么我們要去修改警告或者忽略警告
pod trunk push KImageCodeTypeTool.podspec --allow-warnings
上傳成功!
10.更新本地庫:
因為CocoaPod本身一直在集成很多開發(fā)者的庫,他的master分支一直是在更新的嘀粱,但是你本地的庫相對于剛才上傳SKImageCodeTypeTool的時間節(jié)點你本地的庫是老的
所以我們要去更新一下本地的庫,具體操作:
pod setup
//初始化
pod repo update
//更新倉庫
11.查看上傳結(jié)果:
pod search SKImageCodeTypeTool
//查找
會有一定延遲:
pod tunk me
可以再pop網(wǎng)站搜索
https://cocoapods.org
12.更新維護自己的庫
1.修改項目源碼
2.上傳github
3.修改.podspece內(nèi)部的版本號
4.打tag(同.podspece中版本號)
5.上傳tags
六垄分、Cocoapod的升級:
1.查看當前ruby源路徑:
gem sources -l
*** CURRENT SOURCES ***
http://gems.ruby-china.org/
2薄湿、更新一下gem版本
sudo gem update --system
直到看到
RubyGems system software updated
或者 Latest version already installed. Done.
說明gem版本更新成功
3豺瘤、更新cocoapods
sudo gem install -n /usr/local/bin cocoapods --pre
更新完成之后坐求,再次查看cocoapods的版本
pod --version
參考鏈接
http://www.reibang.com/p/283584683b0b
http://www.reibang.com/p/e52bb69628a9
http://www.reibang.com/p/43f5d099e147