iOS-cocoapods安裝與使用以及常見錯誤

前言

CocoaPods是一個負責管理iOS項目中第三方開源代碼的工具。javascript

2、安裝
因爲網上的教程基本都大同小異,但細節之處還不是很完善,因此藉機會在這裏補充下:
注:要使用CocoaPods,那就要下載安裝它,而下載安裝CocoaPods須要Ruby環境php

1.Ruby環境搭建

當前安裝環境爲Mac Pro 10.11.1。Mac OS自己自帶Ruby,但仍是更新一下保險,由於升級了系統以後,可能會出現一些意想不到的狀況,最好仍是更新一下Ruby。html

  • 查看下當前ruby版本:打開終端輸入 ruby -v(確實安裝了,不過iOS9使用https協議替換http協議,因此之前掛靠在淘寶下ruby的源的路徑也要修改下,順便更新下ruby)
    CYdediannao:~ lcy$  ruby -v 
    ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
  • 淘寶已經中止基於 HTTP 協議的鏡像服務, 請在配置中使用 HTTPS 協議代替
CYdediannao:~ lcy$ gem sources - l *** CURRENT SOURCES *** http://ruby.taobao.org/ CYdediannao:~ lcy$ gem sources --add https://ruby.taobao.org/ --remove http://ruby.taobao.org/ https://ruby.taobao.org/ added to sources http://ruby.taobao.org/ removed from sources
  • gem sources -l (用來檢查使用替換鏡像位置成功,而後升級ruby
    CYdediannao:~ lcy$ sudo gem install rails
    或者是
    CYdediannao:~ lcy$ sudo gem update --system

2.下載安裝CocoaPods

CYdediannao:~ lcy$ sudo gem install cocoapods

出現的錯誤###:緣由是該文件夾沒有修改的權限

CYdediannao:~ lcy$ sudo gem install cocoapods 
Fetching: nap-1.0.0.gem (100%) Successfully installed nap-1.0.0 Fetching: molinillo-0.4.0.gem (100%) Successfully installed molinillo-0.4.0 Fetching: cocoapods-trunk-0.6.4.gem (100%) Successfully installed cocoapods-trunk-0.6.4 Fetching: cocoapods-try-0.5.1.gem (100%) Successfully installed cocoapods-try-0.5.1 Fetching: cocoapods-stats-0.6.2.gem (100%) Successfully installed cocoapods-stats-0.6.2 Fetching: cocoapods-search-0.1.0.gem (100%) Successfully installed cocoapods-search-0.1.0 Fetching: cocoapods-downloader-0.9.3.gem (100%) Successfully installed cocoapods-downloader-0.9.3 Fetching: xcodeproj-0.28.2.gem (100%) ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/xcodeproj
10.11以上系統使用命令: sudo gem install -n /usr/local/bin cocoapods
CYdediannao:~ lcy$ sudo gem install -n /usr/local/bin cocoapods
Password:
Successfully installed xcodeproj-0.28.2 Fetching: cocoapods-core-0.39.0.gem (100%) Successfully installed cocoapods-core-0.39.0 Fetching: cocoapods-0.39.0.gem (100%) Successfully installed cocoapods-0.39.0 Parsing documentation for xcodeproj-0.28.2 Installing ri documentation for xcodeproj-0.28.2 Parsing documentation for cocoapods-core-0.39.0 Installing ri documentation for cocoapods-core-0.39.0 Parsing documentation for cocoapods-0.39.0 Installing ri documentation for cocoapods-0.39.0 3 gems installed

3.使用命令 pod search AFNetworking 查找某一個庫,看cocoapods有沒有安裝好,搜索結果以下,已經安裝好了cocoa pods

-> AFNetworking (2.6.0) A delightful iOS and OS X networking framework. pod 'AFNetworking', '~> 2.6.0' - Homepage: https://github.com/AFNetworking/AFNetworking - Source: https://github.com/AFNetworking/AFNetworking.git - Versions: 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master repo] - 2.6.0, 2.5.4, 2.5.3, 2.5.2, 2.5.1, 2.5.0, 2.4.1, 2.4.0, 2.3.1, 2.3.0, 2.2.4, 2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2, 2.0.1, 2.0.0, 2.0.0-RC3, 2.0.0-RC2, 2.0.0-RC1, 1.3.4, 1.3.3, 1.3.2, 1.3.1, 1.3.0, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0, 1.0RC3, 1.0RC2, 1.0RC1, 0.10.1, 0.10.0, 0.9.2, 0.9.1, 0.9.0, 0.7.0, 0.5.1 [master-1 repo] - Subspecs: - AFNetworking/Serialization (2.6.0) - AFNetworking/Security (2.6.0) - AFNetworking/Reachability (2.6.0) - AFNetworking/NSURLConnection (2.6.0) - AFNetworking/NSURLSession (2.6.0) - AFNetworking/UIKit (2.6.0) -> AFNetworking+AutoRetry (0.0.5) Auto Retries for AFNetworking requests pod 'AFNetworking+AutoRetry', '~> 0.0.5' - Homepage: https://github.com/shaioz/AFNetworking-AutoRetry - Source: https://github.com/shaioz/AFNetworking-AutoRetry.git - Versions: 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master repo] - 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1 [master-1 repo] -> AFNetworking+Ext (1.2.1) AFNetworking的封裝, 並提供一個 UIImageView+DYLoading cache in fileSystem+memory pod 'AFNetworking+Ext', '~> 1.2.1' - Homepage: https://github.com/junhaiyang/AFNetworkingExt - Source: https://github.com/junhaiyang/AFNetworkingExt.git - Versions: 1.2.1, 1.2, 1.1, 1.0, 0.5, 0.4, 0.3 [master repo] - 1.2.1, 1.2, 1.1, 1.0, 0.5, 0.4, 0.3 [master-1 repo] - Subspecs: - AFNetworking+Ext/Base (1.2.1) - AFNetworking+Ext/AFCustomRequestOperation (1.2.1) - AFNetworking+Ext/AFDownloadRequestOperation (1.2.1) - AFNetworking+Ext/AFTextResponseSerializer (1.2.1) - AFNetworking+Ext/example (1.2.1) - AFNetworking+Ext/UIKit (1.2.1) - AFNetworking+Ext/UIKit/UIImageView+DYLoading (1.2.1) ##還有很大篇幅的結果,此處省略。。。##

4.cocoapods的使用

  • 新建一個項目,名字podsTestjava


    項目podsTest.png
  • 打開項目所在的文件夾,在終端敲入 cd 將文件夾拖拽到終端 或者用cd打開項目所在文件夾(注意:包含podsTest文件夾、podsTest.xcodeproj、podsTestTest、podsTestUITests的那個總目錄)如圖:ios


項目組織目錄.png

進入到podsTest組織目錄.png
  • 創建Podfile(配置文件)
    1.接着上一步,終端輸入 vim Podfile

    屏幕快照 2015-10-23 16.09.45.png

    2.鍵盤輸入 i,進入編輯模式

    進入編輯模式.png

    3.內容按這個格式輸入
     platform :ios, '7.0'
     pod 'MBProgressHUD', '~> 0.9.1'
     pod 'ASIHTTPRequest', '~> 1.8.2'
     pod 'SDWebImage', '~> 3.7.3'

注意: 若是你不知道這些框架目前的版本是,可使用命令pod search +框架名稱查看 相應的信息git


查找結果.png

4.而後按Esc,而且輸入 shift +「 :」號進入vim命令模式,而後在冒號後邊輸入wq 按回車鍵,保存而且退出。
5.結果以下圖:github


編輯結果.png


6.發現podTest項目總目錄中多一個Podfile文件sql


Podfile.png


7.激動人心的時刻到了:肯定終端cd到項目總目錄,而後輸入 pod install,等待一會,框架安裝好了如圖所示,多出了3個文件夾/文件夾。vim


安裝後的文件結構.png

注意:

如今打開項目不是點擊 podTest.xodeproj了,而是點擊 podsTest.xcworkspacexcode


屏幕快照 2015-10-23 16.45.00.png

5.cocoaPods使用心得

  • 最近使用CocoaPods來添加第三方類庫,不管是執行pod install仍是pod update都卡在了Analyzing dependencies不動 緣由在於當執行以上兩個命令的時候會升級CocoaPods的spec倉庫,加一個參數能夠省略這一步,命令以下:

    pod install --verbose --no-repo-update pod update --verbose --no-repo-update

    $ pod install只會按照Podfile的要求來請求類庫,若是類庫版本號有變化,那麼將獲取失敗。可是 $ pod update會更新全部的類庫,獲取最新版本的類庫。每次用$ pod update就行。

  • 安裝一個xcode插件管理工具,地址 目前還不支持XCode7
    在終端中執行

    curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/install.sh | sh

    安裝完了打開xcode->window->package manger 搜cocoapods安裝,方便操做。

  • 工程在模擬器上編譯報錯,不支持i386,Cocoapods確實還不支持64位模擬器,解決辦法:
    其實就2條:
    1.build active architecture only 在debug的時候設置成YES,不要在release的時候用模擬器
    2.other linker flags 加一個 $(inherited)

  • 用到svn,git多人協做的話,Pods/這個文件夾不要上傳,例如:
    .../Pods/Pods.xcodeproj ...Pods/Target Support Files/這些每次編譯都會改動從而引發合併代碼的時候衝突

心得內容來源

6.cocoaPods使用常見錯誤彙總:

  • pod install 時出現如下錯誤,錯誤緣由是在vim Podfile 時,輸入命令前面帶有空格致使的,把空格去掉就行了
錯誤寫法:
 platform :ios, '7.0'  pod 'MBProgressHUD', '~> 0.9.1'  pod 'ASIHTTPRequest', '~> 1.8.2'  pod 'SDWebImage', '~> 3.7.3' 提示錯誤: [!] Invalid `Podfile` file: undefined method ` pod' for #<Pod::Podfile:0x007ff3f9a45a48>. Updating CocoaPods might fix the issue. 正確寫法:命令前面不留空格 platform :ios, '7.0' pod 'MBProgressHUD', '~> 0.9.1' pod 'ASIHTTPRequest', '~> 1.8.2' pod 'SDWebImage', '~> 3.7.3'
7 使用CocoaPods來管理Objective-c的類庫,很是方便。可是有一個小問題,當我在xcode輸入import關鍵字的時候,沒有自動聯想補齊代碼的功能,須要手工敲全了文件名,難以適應。
在stackoverflow上找到了解決辦法:
1.Go to the Target > \」Build Settings\」 tab and find the \」User Header Search Paths\」 setting. 2.Set this to \」$(BUILT_PRODUCTS_DIR)\」 and check the \」Recursive\」 check box. Now the built target will search the workspace’s shared build directory to locate the linkable header files. 簡單說就是這麼幾步: 1.選擇Target -> Build Settings 菜單,找到\」User Header Search Paths\」設置項 2.新增一個值$(BUILT_PRODUCTS_DIR),而且選擇\」Recursive\」,這樣xcode就會在項目目錄中遞歸搜索文件 自動補齊功能立刻就好使了。

 

原文連接:http://www.jianshu.com/p/53f1679604ad
相關文章
相關標籤/搜索