CocoaPods是一個(gè)負(fù)責(zé)管理iOS項(xiàng)目中第三方開源代碼的工具。
1.CocoaPods的安裝
需要用到ruby,Mac系統(tǒng)自帶ruby,但如果不是最新的系統(tǒng),最好更新一下。
ruby的軟件源rubygems.org被墻了,所以先換一下源,命令行下依次執(zhí)行3條命令(https://ruby.taobao.org)
$ gem sources --remove https://rubygems.org/
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
$ gem sources -l
然后升級(jí)gem
$ sudo gem update --system
完了就開始安裝CocoaPods
$ sudo gem install cocoapods
$ pod setup
第二條命令執(zhí)行的時(shí)候會(huì)比較耗時(shí),這個(gè)時(shí)候要去把整個(gè)specs倉庫clone一下,下載到 ~/.cocoapods里;
cd? 到該目錄里,用du -sh *命令來查看文件大小,每隔一會(huì)看看確認(rèn)是否在下載。
出現(xiàn)Setting up CocoaPods master repo,半天沒有任何反應(yīng),是因?yàn)榉叫iL設(shè)計(jì)的防火墻阻擋了cocoapods.org。
gitcafe和oschina都是國內(nèi)的服務(wù)器,可以用它們CocoaPods索引庫的鏡像https://gitcafe.com/akuandev/Specs.git
http://git.oschina.net/akuandev/Specs.git
你也可以在公司內(nèi)網(wǎng)fork一份,目的主要是方便做私有pod,不過要保證fork出來的specs和cocoapods原project(上游項(xiàng)目)定期同步更新(可以用腳本去做)。
https://help.github.com/articles/syncing-a-fork/
$ pod repo remove master
$ pod repo add master https://gitcafe.com/akuandev/Specs.git
$ pod repo update
2.CocoaPods的使用
(1)在終端shell中cd 來到你要管理的項(xiàng)目,運(yùn)行:pod install 你的工程就多了個(gè)xworkspace文件夾,以后用這個(gè)打開工程
(2)添加第三方庫
搜索一個(gè)開源庫
$ pod search AFNetworking
在工程目錄里建一個(gè)Podfile文件
$ vim Podfile
platform :ios,'6.0'
pod 'ASIHTTPRequest', '~> 1.8.2'
可以指定target
target 'OneTravelTests' do
pod 'Specta'
end
對(duì)于extension,需要特別設(shè)置一下,不然編譯出錯(cuò)
post_install do |installer_representation|
? ? installer_representation.project.targets.each do |target|
? ? ? ? target.build_configurations.each do |config|
? ? ? ? ? ? config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
? ? ? ? ? ? config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
? ? ? ? end
? ? end
end
編輯完了保存,運(yùn)行pod update。
3.使用心得
(1)使用CocoaPods來添加第三方類庫,無論是執(zhí)行pod install還是pod update都卡在了Analyzing dependencies不動(dòng),原因在于當(dāng)執(zhí)行以上兩個(gè)命令的時(shí)候會(huì)升級(jí)CocoaPods的spec倉庫,加一個(gè)參數(shù)可以省略這一步,命令如下:?
pod install --verbose --no-repo-update? ? 或者??pod update --verbose --no-repo-update
解釋:$ pod install只會(huì)按照Podfile的要求來請(qǐng)求類庫,如果類庫版本號(hào)有變化,那么將獲取失敗。但是 $ pod update會(huì)更新所有的類庫,獲取最新版本的類庫。每次用$ pod update就行。
(2)安裝一個(gè)xcode插件管理工具? http://alcatraz.io,執(zhí)行?curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh??完了打開xcode->window->package manger 搜cocoapods這個(gè)插件進(jìn)行安裝。
(3)工程在模擬器上編譯報(bào)錯(cuò),不支持i386,Cocoapods確實(shí)還不支持64位模擬器,解決辦法:
http://stackoverflow.com/questions/19213782/undefined-symbols-for-architecture-arm64
其實(shí)就2條,1.build active architecture only 在debug的時(shí)候設(shè)置成YES,不要在release的時(shí)候用模擬器? ? 2.other linker flags 加一個(gè) $(inherited)
(4)用到svn,git多人協(xié)作的話,Pods/這個(gè)文件夾不要上傳,.../Pods/Pods.xcodeproj? ...Pods/Target Support Files/這些每次編譯都會(huì)改動(dòng)從而引起合并代碼的時(shí)候沖突。
(5)更多看這里:
https://github.com/CocoaPods/CocoaPods/issues?q=is%3Aissue+is%3Aopen+sort%3Acomments-desc