iOS模塊化實踐 -- 利用CocoaPods拆分項目
準備工作
- 安裝好XCode
- 配置好CocoaPods,并且可以pod update 以及 pod install 成功
- 已經獲得CocoaPods的Repo的地址,以及對應pod的Git地址(這里以gitLab為例)
- 涉及到的所有操作,請盡量在Terminal中進行,包括CocoaPods的相關操作(CocoaPods官方客戶端無效)
私有Spec Repo
所謂Spec Repo,就是Pods的索引。一旦在podfile中設置source為某個私有repo的git地址,在進行pod update的時候就會去這個repo中進行檢索,如果檢索到對應的pod,會讀取該Pod的podspec從而進行安裝。
一個Spec Repo的目錄結構如下:

Spec Repo 目錄
之后我們去GitLab上新建一個相應的Repo地址,之后添加repo到本地。
pod repo add [Private Repo Name] [GitHub HTTPS clone URL]
pod repo add realTimeBusCocoaRepo https://gitlab.com/iosCocoaPods4CMS/iOS_Cocoapods_Repo.git</pre>
成功后可以進入 ~/.cocoapods/repos 目錄下查看 realTimeBusCocoaRepo 這個目錄了。
創建Pod項目工程文件
這里建議通過CocoPods的官方命令來進行Pod項目的創建,以測試項目helloCMSPod為例,命令如下:
pod lib create helloCMSPod不出意外地話,會提問你四個問題:
1.What language do you want to use?? [ Swift / ObjC ]2.Would you like to include a demo application with your library? [ Yes / No ]
3.Which testing frameworks will you use? [ Specta / Kiwi / None ]
4.Would you like to do view based testing? [ Yes / No ]
5.What is your class prefix?</pre>
這里我分別選擇了ObjC、Yes、None、Yes、CTDemo,之后會自動打開項目。
因為選擇了View based testing,XCode8以上版本會檢測到swift版本落后,邀請你升級,這時候可升可不升。
此時的目錄樹結構如下:
然后就是去新建好的項目里盡情的揮霍了:)
此時記得將所有更改放到Classes文件夾之下,然后在Example文件下執行 pod update,則可發現新的文件已經出現在項目工程的pods文件夾之下了。
之后要做的就是把庫同步到Git上去了。這時候需要去GitLab上建立一個對應的倉庫,例如:
https://gitlab.com/xxx.git (替換為自己的實際git地址)然后將代碼同步到此Git上。
git add .git commit -m "Init"
git remote add origin https://gitlab.com/xxx.git(替換為自己的實際git地址)
git push --set-upstream origin master</pre>
podSpec文件需要版本控制信息,所以我們要打一個Tag.
git tag -m "first demo" 0.1.0git push --tags</pre>
之后就可以去編輯podspec文件了。按以下方式來修改,不明白的字段請參考 官方文檔 :
之后記得去在終端輸入驗證命令,確保該Podspec有效:
pod lib lint helloCMSPod.podspec記得將更改好的podspec文件上傳到git:
git add -Agit commit -m "change for podSpec"
git push
git tag -m "podSpec Demo" 0.1.1
git push --tags</pre>
向Spec Repo提交podspec
提交命令:
pod repo push xxxRepo helloXXXPod.podspec在經過三輪的用戶校驗之后,提交成功!這時候我們去 ~/.cocoapods/repos/xxxRepo 中查看,我們的的podspec已經在里面了!
此時通過 pod search helloXXXPod 已經可以查到了!
如何使用
我們可以在想要使用的項目中的Podfile里加入如下代碼:
pod ‘helloXXXPod’ `` 即可。 當然,由于我們的是私有CocoaPods庫,因此最好告訴系統這個庫的source在哪里,因此在Podfile文件上部也請加上Spec Repo的git地址source ' https://gitlab.com/xxx.git '
整個的Podfile文件看起來是這樣的:之后運行
pod update即可安裝對應的Pods如果出現:</pre>
[!] An unexpected version directory Assets was encountered for the /Users/xxx/helloxxxPod Pod in the helloCMSPod repository.
```
這個錯誤,請查看:
- podspec 是否未上傳到服務器
- Podfile的source地址是否是Spec Repo的地址,而不是具體某一個Pod的地址。
驗證
新建一個SigleView的Project,配置好podfile后進行安裝Pod,編譯好運行,顯示如下圖:

至此,一次Pod拆分完成。
Reference
-
無數的StackOverflow
來自:http://www.jianshu.com/p/a73b6bfdb41a




之后運行