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


前言

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

二、安裝
由於網上的教程基本都大同小異,但細節之處還不是很完善,所以借機會在這里補充下:
注:要使用CocoaPods,那就要下載安裝它,而下載安裝CocoaPods需要Ruby環境

1.Ruby環境搭建

當前安裝環境為Mac Pro 10.11.1。Mac OS本身自帶Ruby,但還是更新一下保險,因為升級了系統之后,可能會出現一些意想不到的情況,最好還是更新一下Ruby。

  • 查看下當前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的使用

  • 新建一個項目,名字podsTest


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


項目組織目錄.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 +框架名稱查看 相應的信息


查找結果.png

4.然后按Esc,並且輸入 shift +“ :”號進入vim命令模式,然后在冒號后邊輸入wq 按回車鍵,保存並且退出。
5.結果如下圖:


編輯結果.png


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


Podfile.png


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


安裝后的文件結構.png

注意:

現在打開項目不是點擊 podTest.xodeproj了,而是點擊 podsTest.xcworkspace


屏幕快照 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM