目錄 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 開源庫實戰
這是面向用戶的組件,每當你執行一個pod命令時,這個組件將被激活。它包括了全部實用CocoaPods的功能,而且還能調用其餘gem包來執行任務。
Core gem提供了與CocoaPods相關的文件(主要是Podfile和podspecs)的處理。
Podfile用於配置項目所須要的第三方庫。它能被高度定製,因此你能夠儘量地給它添加你想要的特性。
.podspec文件描述了一個庫將怎樣被添加進工程中。.podspec文件能夠標識該第三方庫所須要的源碼文件、依賴庫、編譯選項,以及其餘第三方庫須要的配置。
這個包負責工程文件直接關係的處理。它能建立以及修改.xcodeproj文件和.xcworkspace文件。它也能夠做爲一個獨立的包使用,當你要編寫修改項目文件的腳本時,能夠考慮使用CocoaPods/Xcodeproj。
安裝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
一、查看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中搜索第三方庫。
具體能夠查看: 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
一、pod spec create ‘name’產生一個name.podspec文件,可仔細閱讀此文件,熟悉.podspec語法;
二、pod spec lint ‘name’.podspec 用來build .podspec文件是否有錯。
解決如下幾個問題:
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.
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'方式指定,可是實際操做卻不成功,不知道爲何。
參照例子ShareKit :
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
刪除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的動態庫
- 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,我是不打算用它了。