iOS-CocoaPods-安裝筆記(持續更新遇到的坑)

由於把簡書全部的文章刪除了,因此這邊就補充會本來的一些認爲有價值的文章供查閱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成功後的三方庫的緩存
      大概的邏輯: pod install -> 下載SDWebImage到Caches裏面 -> 根據podSpec copy Caches內的庫到項目Pods裏面進行使用
    • /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中心索引表(初始化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

複製代碼
相關文章
相關標籤/搜索