CocoaPods 使用手冊

目錄                                                                                                                                               html

1.核心組件                                                                                                                                                                              ios

1.1 CocoaPods / CocoaPod                                                                                                                                            git

1.2 CocoaPods / Core                                                                                                                                                       github

1.3 CocoaPods / Xcodeproj                                                                                                                                          xcode

2.安裝和更新                                                                                                                                                                        ruby

3.Pod Commands                                                                                                                                                                  app

4.Podfile                                                                                                                                                                                 ide

5..podspec Syntax                                                                                                                                                         工具

6.支持第三方開發者將CustomSDK pod到本身的工程,如何作?                                             網站

7.製做支持安裝第三方靜態庫podspec和podfile                                                                          

8.製做支持subspec的podspec 文件                                                                                                           

9.對CocoaPods文檔查看的支持                                                                                                                        

10.清理pod install配置後的工程                                                                                                               

11.CocoaPods實用網站  

12. Pod install 開源庫實戰

                                                                                                                                            

1.核心組件

1.1 CocoaPods / CocoaPod

這是面向用戶的組件,每當你執行一個pod命令時,這個組件將被激活。它包括了全部實用CocoaPods的功能,而且還能調用其餘gem包來執行任務。

1.2 CocoaPods / Core

Core gem提供了與CocoaPods相關的文件(主要是Podfile和podspecs)的處理。

1.2.1 Podfile

Podfile用於配置項目所須要的第三方庫。它能被高度定製,因此你能夠儘量地給它添加你想要的特性。

1.2.2 Podspec

.podspec文件描述了一個庫將怎樣被添加進工程中。.podspec文件能夠標識該第三方庫所須要的源碼文件、依賴庫、編譯選項,以及其餘第三方庫須要的配置。

1.3 CocoaPods / Xcodeproj

這個包負責工程文件直接關係的處理。它能建立以及修改.xcodeproj文件和.xcworkspace文件。它也能夠做爲一個獨立的包使用,當你要編寫修改項目文件的腳本時,能夠考慮使用CocoaPods/Xcodeproj。

 

2.安裝和更新

安裝CocoaPods這個工具,須要用到gem(ruby的第三方庫管理工具)。MacOS中默認支持gem,可是有時安裝或更新cocoapods,須要更高版本的gem支持。

[sudo] gem update --system,升級gem。(用此命令可能仍然沒法升級gem, 可嘗試將gem包下載到本地(速度很快),細節https://rubygems.org/)

經驗累積:

一、chmod 775 /usr/local,修改usr/local的訪問權限,使[sudo] gem install cocoapods有權限安裝。

二、operation not permitted - /usr/bin/xcodeproj,gem list能夠查看到全部安裝到本機的包,我電腦上的本地路徑:/Library/Ruby/Gems/[version]/gems。查看目錄下specifications目錄,可能無xcodepro.gemspec文件,則從cocoapod的github上下載對應版本的文件。便可解決

三、operation not permitted - /usr/bin/pod, 使用此命令安裝 

sudo gem install -n /usr/local/bin cocoapods,即指定pod的路徑。出現此問題,應該是gem的環境變量配置不正確。

 

關於安裝舊版本:

sudo gem uninstall cocoapods

Password:

 

Select gem to uninstall:

 1. cocoapods-0.34.4

 2. cocoapods-0.35.0

 3. All versions

刪除新版本,天然便在舊版本了。若是以前未安裝過指定的舊版本,則:

sudo gem install cocoapods -v 0.25.0

 

3.Pod Commands

一、查看pod全部命令:pod help

二、查看具體命令用法: pod <command> —help, 例如:pod try —help

三、安裝和配置第三方庫: pod install. 若是想看到具體細節,pod install --verbose.一個很不錯的link: http://blog.jobbole.com/53365/

四、檢測並更新新版本庫:pod update。能夠經過pod outdated查看Pods中已過時的第三方開源庫。pod install & pod update區別: 例如:Podfile中,pod ‘SVProgressHUD’,而未指定此開源庫版本。pod install,若是SVProgressHUD已存在Pods中,則直接使用它。可是,pod update,會從新下載最新版本到Pods中。

 

五、產生`~/.cocoapods/repos`: pod setup. Cocoapods目錄中保持了它支持的全部第三方開源庫信息. 更新,sudo rm -fr ~/.cocoapods/repos/master, 再pod setup。也可使用git進行更新。

六、搜索第三方開源庫:  pod search <open source>, 在cocoapods這個目錄中搜索。也能夠在http://cocoapods.org中搜索第三方庫。

 

4.Podfile

具體能夠查看: http://guides.cocoapods.org/syntax/podfile.html

 

1). pod ‘objection’’version’;

 例如,pod ‘MCDateExtensions’,不指定版本,在pod update時會獲取最新的版本;pod ‘MCDateExtensions’’~>1.0.0’,獲取的版本信息是[1.0.0, 1.1.0). ~>是參照ruby的語法的,~>x.y.z, 的意思是版本號 x,y 固定,但能夠大於等於 z。一般版本號的命名有其慣例:x major 版本號升級表示有 API 發生不向後的兼容性變更,y minor 版本號升級表示有功能新增,z tiny 版本號升級表示 bugs 修正。所以 「~> x.y.z」 可讓我們保有升級彈性,又不致於升級太多讓程序發生不兼容錯誤;

 

2). 從本地pod files, pod 'AFNetworking', :path => '~/Documents/AFNetworking'此目錄下必定要有.podspec文檔

 

3). 從git server端pod files

To use the master branch of the repo:

pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :branch => ‘develop’

Or specify a commit:

pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :commit => '082f8319af'

 

4)、 pod 'ShareKit/Facebook' 支持子模塊的導入。

 

5)、Pod install依次作了什麼?

步驟:

http://blog.jobbole.com/53365/

 

6)、較優的git倉庫管理

將Podfile & Podfile.lock & workspace放到git倉庫中管理

緣由:

Podfile.lock, 保證每一個team成員使用的第三方庫是同一個版本的

Workspace, 若是由CocoaPods生成,則沒有必要。若是workspace是本身建立的,就須要。

 

7)、註釋

單行註釋: #

多行註釋:

      =begin    

codes to comment 

   =end

 

5..podspec Syntax

一、pod spec create ‘name’產生一個name.podspec文件,可仔細閱讀此文件,熟悉.podspec語法;

二、pod spec lint ‘name’.podspec 用來build .podspec文件是否有錯。

 

6.支持第三方開發者將CustomSDK pod到本身的工程,如何作?

解決如下幾個問題:

1). 在工程中建立一個.podspec文件,並讓其編譯經過;

編譯.podspec文件使用命令,pod spec lint name. 官方文檔: 這份文檔:http://guides.cocoapods.org/making/making-a-cocoapod.html

2). 將自定義的.podspec歸入Cocoa Spec管理;

a. 需github上一個account,並fork cocoa spec;

b. 將更改push到fork cocoa spec responsity上;

c. new pull request -> compare across forks;

3). 處理CustomSDK version update;重複2中的III.

 

7.製做支持安裝第三方靜態庫podspec和podfile

1) 如何製做podspec文件參照OpenSSL:  

https://github.com/krzyzanowskim/OpenSSL

 

2) 若是寫Podfile以支持從本地導入OpenSSL:

例如:pod 'OpenSSL', :path => '../OpenSSL'(此爲OpenSSL在本地的路徑),從網上下載的包中,有一個快捷的OpenSSL.podspec文件和OpenSSL-Universal.podspec文件。刪除快捷方式打開的OpenSSL.podspec文件,將OpenSSL-Universal.podspec文件重命名爲OpenSSL.podspec,並將此文件中s.name = "OpenSSL-Universal"修改爲s.name = "OpenSSL"。

雖然,從理論上能夠用pod ‘OpenSSL’, :podspec => '../OpenSSL /OpenSSL-Universal.podspec'方式指定,可是實際操做卻不成功,不知道爲何。

 

8.製做支持subspec的podspec 文件

參照例子ShareKit :

https://github.com/ShareKit

 

9.對CocoaPods文檔查看的支持

link: http://cocoadocs.org

如何將本身寫的代碼產生apple 風格的文檔:

1. 安裝Alcatraz和VVDocumenter-Xcode這兩個xcode插件,

安裝 Alcatraz,link: http://alcatraz.io

能夠在此路徑下找到:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins. Relaunch Xcode and type in /// above any code you want to write a document to.

2. Download the link: https://github.com/tomaz/appledoc, 安裝appledoc.

或者brew(unix tool)安裝。安裝方法:cd到appledoc的下載路徑;sudo sh install-appledoc.sh; sudo sh install-appledoc.sh -b /usr/bin -t ~/Library/Application\ Support/appledoc.

3. 能夠在終端上輸入appledoc —help查看它的用法。Simple Example:  appledoc ./NoticeBandSDK  --project-name NoticeBandSDK --project-company "mophie-inc" --company-id com.mophie-inc.SDKDoc --output ./,會在當前目錄產生一個txt,告訴你文檔所在路徑。Xcode中全部文檔路徑: ~/Library/Developer/Shared/Documentation/DocSets

 

10.清理pod install配置後的工程

  • 文件清理

      刪除Podfile.lock,workspace,Pods目錄

  • 工程配置清理

      一、打開要清理的工程,選擇Build Phases, delete Manifest.lock & Copy pods Resources & Run script。

      2.Framework&Header search path清理

  • 清理工程添加文件

      選擇工程,到Link Binary With Libraries,刪除libPods.a和相似於libPods***.a的動態庫

 

11.CocoaPods實用網站

 

12. Pod install 開源庫實戰

- pod 'LayerKit'

用pod這個工具導入源碼,其實這個工具作的還不錯,可是若是導入的工程是framework,則目前遇到的就各類出錯了,好比這個LayerKit。因此,若是之後用到的是framework,仍是選擇手動導入吧。

如何手動導入LayerKit這Framework?

1. 在與工程文件同級目錄下,建立Framework這個目錄,將LayerKit.Framework拷貝到此目錄下;

2. 將這個目錄添加進工程中;

3. 工程的Framework search path,須要將Framework這個目錄路徑添加進去;

4. 若是作到步驟3便結束,會報這樣的錯誤

dyld: Library not loaded: @rpath/LayerKit.framework/LayerKit Reason: image not found

解決辦法:in the target's General tab, there is an Embedded Binaries field, add framework there, and the crash is resolved.

可參照此連接: http://stackoverflow.com/questions/24333981/ios-app-with-framework-crashed-on-device-dyld-library-not-loaded-xcode-6-beta

運行程序時,會有以下打印: 

LayerKit client v0.17.0 loaded

爲了找到4步驟中的解決方案,真真是苦了臣妾了,差點徹底捨棄掉pod。不過幸虧pod作的事情比較多,因此把pod作好的事情,再手動作一篇,太麻煩了。所以,又回到了pod的陣營,只是之後導入framework,我是不打算用它了。

相關文章
相關標籤/搜索