CarthagePods -- 一個整合 CocoaPods 和 Carthage 一起使用的工具

最近寫了個工具CarthagePods,將 CarthageCocoaPods 配合一起使用。介紹我這個工具之前,先看看我們 iOS 開發(fā)最常用的兩個包管理器吧。

Carthage

Carthage 有個重要的優(yōu)點,它可以把依賴的庫都編譯成 framework,這樣一來就不需要每次編譯工程,都去編譯一遍依賴的第三方庫。
但是也存在一些缺點,例如:

  • 使用的依賴庫比較多,集成起來就比較麻煩。
  • framework@IBDesignable@IBInspectable 并不那么友好 =。= 。

CocoaPods

CocoaPods 正好可以解決 Carthage 的不足。CocoaPods 使用起來非常方便,因為他不會把依賴庫編譯提前編譯成 framework, 所以也不存在對 @IBDesignable@IBInspectable 不友好的問題。

當然,他不會把第三方庫編譯成功 framework 這也會導致工程編譯起來比較慢。

取長補短

前段時間蝦神在他的公眾號中發(fā)布了一篇文章則提供類一個解決方案I have a pod, I have a carthage, En...。
然而操作起來還是略微麻煩=。=

這樣我們就可以將使用 @IBDesignable@IBInspectable 屬性的庫還是使用 CocoaPods 來管理。沒使用的則使用 Carthage 。

方案流程

蝦神文章中大概的實現方案流程是這樣的:

  • 先使用 Carthage 把一些依賴庫編譯成 framework。
  • 通過 CocoaPodsframework 打包 repo
  • 最后通過 CocoaPods 把所有的依賴庫都 install 了。

蝦神的方案很酷,但是使用起來還是略為麻煩。所以我決定使用 Ruby 來把這些流程串聯(lián)起來,只需要簡單的敲個 install 就能完成這些工作 -

為什么使用 Ruby ?因為我想學 Ruby ,拿來練手=。=

CarthagePods

安裝方法

gem install CarthagePods

介紹

接下來簡單介紹一下 CarthagePods 的一些命令吧。

14920008735282.jpg

init

會生成 CocoaPodsPodfile 文件, CarthageCartfile 文件, 和一個 CPodfile。

大家使用的時候可以和往常使用 CocoaPodsCarthage ,一樣把依賴的庫配置到對應的文件中。

CPodfile 又是什么鬼?

我在使用我最常用的庫 RxSwift 時,發(fā)現了一個問題。RxSwift 使用 Carthage 編譯時會生成一個 RxTestframework 。如果你工程中包含了這個 framework 會導致你打包失敗。所以 CPodfile 則提供了一種方法把需要過濾的 framework 給過濾掉。

使用方法如下:

filterFramework ['RxTest.framework', 'RxBlocking.framework']

install

install 命令則是分別執(zhí)行 CocoaPodsinstall 命令 和 Carthagebootstrap 命令。

考慮到保留兩個工具的功能,這里盡可能保留了兩個工具 install 時的參數。


14920021037322.jpg

熟悉 Carthage 可能會發(fā)現,少了個 --platform
我們使用 CocoaPods 是其實會在 Podfile 中直接定對應的平臺,所以這里的參數,工具會直接在 Podfile 中獲取。

update

這個命令就是分別執(zhí)行 CocoaPodsCarthageupdate 命令。功能與 install 相似。

遺留問題

  • 兩個庫,一個使用 CocoaPods, 一個使用 Carthage 去 install,如果這兩個庫同時依賴于另外一個庫。這種場景可能會產生問題。(這個問題會在后續(xù)版本解決)
  • 我開發(fā)的時候希望能使用 RxTest,發(fā)布的時候把它過濾掉。這個目前還是比較難辦的。

不過退一步想,我們遇到這些情況還是都可以幾乎無痛的,把一些庫切換使用 CocoaPods 做依賴管理。

最后歡迎大家嘗試使用我這個工具,歡迎 Issue 。我會盡我最大努力去維護它。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容