由於把簡書全部的文章刪除了,因此這邊就補充會本來的一些認爲有價值的文章供查閱ios
CocoaPods 真是每時每刻均可能出現新的坑,因此我又只能更新了....git
CocoaPods 能讓開發者很是方便的使用第三方類庫,不用本身去管理依賴問題,以及非arc等編譯條件在mac 系統下調用終端:github
基本的步驟是 gem install cocoapods -> pod setup -> pod init -> edit Podfile -> pod install -> open xcworksapce
(期間出現對應的問題 就對應解決)xcode
這裏着重解析下pod經常使用的幾個文件夾:緩存
/Users/{yourName}/Library/Caches/CocoaPods
這個位置放着系統的pod git clone成功後的三方庫的緩存/Users/{yourName}/.cocoapods/repos
這個位置存放着cocoapods的中心索引表,主要得repo 是 master, 也必需要有master纔可讓pod進行執行 同時你新建的私有repo也會處於這個位置Pods
根據Podfile生成的文件內容,裏面包含了源碼因此在網絡極端狀況(本身特別難更新的話),終極技能是,直接去複製隊友的Pods文件到本身項目文件,而後pod install就行...,或者也能夠將隊友的Caches文件複製過去,ruby
#安裝cocoapodsbash
爲了防止gem安裝更新失敗,所以先替換爲國內的淘寶的鏡像源,不然在天朝的網絡限制中會很慢很慢網絡
請別弄混亂一個東西,這裏替換的ruby源的地址,是爲了安裝cocoapods這個庫管理軟件,安裝目錄默認在
/Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/
, 後面說替換的coding等spec.git,是指替換cocoapods的中心索引表的git地址ssh
gem sources --remove https://rubygems.org/ //等有反應以後再敲入如下命令
// 更新爲 ruby-china的鏡像, 淘寶鏡像已經中止
gem sources -a https://gems.ruby-china.org/
複製代碼
檢查一下看看curl
gem sources -l
*** CURRENT SOURCES *** https://gems.ruby-china.org/
複製代碼
使用gem安裝cocoapods
sudo gem install cocoapods //1.0正式版本已經發布,規則有一點的變化
複製代碼
若是gem出現錯誤 ** Unable to resolve dependencies: cocoapods requires cocoapods-core (= 0.35.0), claide (~> 0.7.0), xcodeproj (~> 0.20.2), cocoapods-downloader (~> 0.8.0) **
先更新gem而後從新開始
sudo gem update --system //沒什麼問題就不要更新這個了,容易出現問題,更新後請從新設置下鏡像源
複製代碼
** sudo gem install cocoapods 出現 Operation not permitted - /usr/bin/xcodeproj**
sudo gem install -n /usr/local/bin cocoapods
複製代碼
//若是還有問題 請看下面
若是pod setup能夠將github的代碼下載得動,那你就不用去折騰了
specs的意思: 規格, 說明書
全部第三方庫
pod lib lint
經過後,都會push到這個Specs.git
裏面,並且cocoapods
軟件在pod install
,也是去Specs.git
(即repo
裏面的master
)查找對應的版本信息的,所以我稱之爲中心索引表
cocospod就是一箇中心化的工具,相對而言carthge是去中心化的,所以carthge 不能進行search,或者查看下各個庫支持到哪一個版本,只能去三方的git庫自行查看
pod setup //會將Specs.git的代碼下載到~/.cocoapods/repo/master
//若是仍是太慢,嘗試下
pod install --verbose
複製代碼
pod setup內部實現 /Library/Ruby/Gems/2.0.0/gems/cocoapods-1.1.1/lib/cocoapods/command/setup.rb
def run
UI.section 'Setting up CocoaPods master repo' do
if master_repo_dir.exist?
set_master_repo_url
set_master_repo_branch
update_master_repo
else
add_master_repo
end
end
UI.puts 'Setup completed'.green
end
// 省略一些代碼 ....
def self.read_only_url
'https://github.com/CocoaPods/Specs.git'
複製代碼
//這裏默認寫了加載索引表的地址, 因此 若是 pod repo add master https://git.coding.net/CocoaPods/Specs.git 這句失敗的話 //能夠嘗試直接把這個url改成你要更換的新的git 地址,並且改爲你要用的ssh可能更加好
end
複製代碼
- **若是setup很慢甚至卡住**
> (github自己就慢,並且Spec.git的文件數量甚多(1069459+)),致使300+m的git庫特別難下載成功)
爲了`pod install / update` 的時候加快速度,specs倉庫鏡像換成coding上的鏡像或者是 oschina 上的鏡像因此建議先更換數據源
複製代碼
pod repo remove master
// 這裏執行的是,用國內的oschina/coding 去提供git下載,作一下中轉,讓速度稍微快點,可是如今發現上面的Specs.git大多都不更新了... // 後面要自力更生了 pod repo add master https://git.oschina.net/akuandev/Specs.git
> 若是提示失敗或者setup不成功,方案有兩種:
- ###1) 手動將代碼clone下來 【該方法比較有效】
- 出現 [!] To setup the master specs repo, please run `pod setup`.
這些git若是沒更新的話,就先去oschina 搜索 `Specs` 來找一些更新的,或者也能夠本身作一些中轉(新建項目,導入git url,把cocoapods官方的導入到本身的項目中,自行更新... 你要寫個腳本,天天更新也行...)
![尋找新的git](http://upload-images.jianshu.io/upload_images/1111290-fb7f09546d64263c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
複製代碼
git clone https://git.oschina.net/yqszxx/Specs ~/.cocoapods/repos/master
//或者使用ssh的方式,總以爲ssh的方式會快點,https老是卡住 git clone git@git.coding.net:yqszxx/Specs.git ~/.cocoapods/repos/master
pod setup //務必在手動下載代碼後執行一次,執行後 Setup completed
//在執行 pod install --verbose --no-repo-update //避免去更新了
> 若是使用oschina 的 https git clone不成功的話,建議到`git.oschina.net`中添加ssh key,換ssh方式下載源碼
複製代碼
git clone git@git.oschina.net:akuandev/Specs.git ~/.cocoapods/repos/master
---
#Cocoapods 具體使用方法:
直接在須要加入cocoapods項目的根目錄新建Podfile文件
複製代碼
$pod init //會生成模板的Podfile文件 //或者手動建立 $touch Podfile
##編輯 Podfile文件
複製代碼
platform :ios pod 'AFNetworking'
###單獨某個target依賴pod
> 在1.0中要求必須指定target了
複製代碼
target 'XXXTarget' do pod 'AFNetworking' pod 'Masonry' end
而後再執行 pod setup 便可之後每次更改 Podfile文件 則執行 pod update 便可若是在初始化的時候出現:若是安裝後出現
複製代碼
[!] The platform of the target Pods
(iOS 4.3) may not be compatible with Reachability (3.2)
which has a minimum requirement of iOS 6.0 - OS X 10.8.
則修改 Podfile 爲
複製代碼
platform :ios, '6.0'
update 後若是出現大量提示
複製代碼
錯誤 target overrides the OTHER_LDFLAGS
...
則項目中Building setting 設置中 搜索**`Other Linker Flags`**的地方,添加一條
複製代碼
$(inherited)
之後打開項目點擊xcworksapce後綴的文件,不要點擊原來的項目文件
![打開](http://upload-images.jianshu.io/upload_images/1111290-3ae8e3273afdc017.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 至此,已經結束,愉快地使用吧
---
#出現問題總結:
##若是 pod update / pod install 命令執行過慢
(首次運行的時候不要)執行pod install仍是pod update都卡在了Analyzing dependencies不動緣由在於當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數能夠省略這一步,而後速度就會提高很多。
加參數的命令以下:
複製代碼
pod install --verbose --no-repo-update pod update --verbose --no-repo-update
##gem install
> 出現 ERROR: While executing gem ... (Gem::FilePermissionError)
解決方法:
複製代碼
sudo gem install -n /usr/local/bin cocoapods
---
或者:
複製代碼
$ mkdir -p $HOME/Software/ruby $ export GEM_HOME=$HOME/Software/ruby $ gem install cocoapods //打印 $ export PATH=$PATH:$HOME/Sofware/ruby/bin $ pod --version
或者從新安裝rvm
複製代碼
//Install Homebrew:(已經裝過就不用了) $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" // Install RVM: $ \curl -sSL https://get.rvm.io | bash -s stable --ruby $ gem install cocoapods
##出現 Invalid \\`Podfile` file
複製代碼
[!] Invalid Podfile
file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.
這是編碼的問題,有兩種緣由,
1.你的設備確實不支持utf8,
2.你自己錄入文本有問題查看編碼
複製代碼
localhost:xib cty$ locale
執行命令後出現
複製代碼
LANG="zh_CN.UTF-8"LC_COLLATE="zh_CN.UTF-8"LC_CTYPE="zh_CN.UTF-8"LC_MESSAGES="zh_CN.UTF-8"LC_MONETARY="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"LC_TIME="zh_CN.UTF-8"LC_ALL=
發現都是zh,強制設置一下
複製代碼
localhost:xib cty$ export LC_ALL=en_US.UTF-8 localhost:xib cty$ export.UTF-8
再檢查一下
複製代碼
LANG="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_CTYPE="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_ALL="en_US.UTF-8"
好像好了,繼續pod install吧
複製代碼
[!] Invalid Podfile
file: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.
問題依然把全部可能的配置都試一遍
複製代碼
gem install rails
而後
複製代碼
gem install rdoc
而後
複製代碼
gem install nokogiri --no-ri --no-rdoc
這些都設置完通常不會出現問題了,再有問題,多是文本錄入的問題2的解決辦法,若是你是手動輸入的這個須要注意,copy別人的也要檢查一下打開鍵盤偏好設置設置單引號格式,固然冒號我還沒找到怎麼設置,通常錯誤會提示給你哪寫錯了這裏再也不提示utf8的錯誤了,輸入法的錯誤,可是我切換了半天設置了半天仍是沒解決冒號,只能吧
複製代碼
The master
repo requires CocoaPods 0.18.1 -
這個錯誤是在升級階段出現的,升級
複製代碼
gem update cocoapods
##使cocopods管理開源庫編譯出現Library not found for -lPods問題的解決方法
+ 點擊菜單欄上 Product > Edit Scheme
+ 選擇Build
+ 加入Pods static library, 而且保證 pods 處於第一個位置
+ Clean and build 項目
##若是在導入頭文件的時候發現沒法自動補全,或者PCH文件中提示File not found
在User headers search path(在Project 和 Target 都修改)中
複製代碼
${SRCROOT} --右側選擇recursive
##Jenkins 腳本打包中出現 uft-8問題
> [33mWARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
在pod install 以前執行
複製代碼
export LC_ALL="en_US.UTF-8" pod install --no-repo-update
複製代碼