自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Carthage初探:四大優(yōu)勢與四大劣勢

移動開發(fā)
Carthage 是 iOS/Mac 開發(fā)生態(tài)圈的一個包管理工具,與現(xiàn)在流行的 CocoaPods 不同,它是一個去中心化的解決方案。知道它已經(jīng)有一段時間了,但是一直沒有好好玩過,今天整合 Carthage 并自己創(chuàng)建 Carthage 兼容的 Framework 的過程中讓我有了很大的體會,決定寫篇文字記錄一下。

[[140844]]

Carthage 是 iOS/Mac 開發(fā)生態(tài)圈的一個包管理工具,與現(xiàn)在流行的 CocoaPods 不同,它是一個去中心化的解決方案。知道它已經(jīng)有一段時間了,但是一直沒有好好玩過,今天整合 Carthage 并自己創(chuàng)建 Carthage 兼容的 Framework 的過程中讓我有了很大的體會,決定寫篇文字記錄一下。

先來簡單介紹下 CocoaPods,這是現(xiàn)在注流的 iOS/Mac 的包管理工具,當(dāng)前***版本是 0.37.2,已經(jīng)支持 iOS Frameworks。它管理著共 10,822 個庫(并在不斷增長),可以讓開發(fā)者非常容易地將一個第三方庫集成進來。

經(jīng)過一段時間的使用,我覺得 CocoaPods 有如下優(yōu)勢:

  • 使用方便,除編寫 Podfile 以外其他幾乎都是自動完成;
  • 軟件包數(shù)量多,主流支持;
  • 支持 iOS 8 Framework,當(dāng)然也支持舊的靜態(tài)編譯;

但是 CocoaPods 作為一個有中心倉庫的解決方案,缺點也比較明顯:

  • 每次更新環(huán)境都需要連接到中心倉庫,比較耗時;
  • 開發(fā)者使用比較簡單,但是如果創(chuàng)建兼容 CocoaPods  的庫,就會相對繁瑣一些(盡管有了命令行);
  • 每次干凈編譯都會把所有第三方庫都重新編譯一次(看似很正確,直到我遇見 Carthage…)

看到這里你已經(jīng)知道 Carthage 的一個優(yōu)勢了,沒錯,使用 Carthage 的話,所有的第三方庫依賴,除非是更新的需要,不然平常干凈編譯 Project,它是不需要再次編譯的,大大加快平常編譯及 Archive 的時間。每次 Archive 及干凈編譯時都能節(jié)省幾十秒以上,還是非??捎^的,光是沖的這點,Carthage 就值得使用。

那么,Carthage 還有什么優(yōu)勢呢?前面還提到了,它是去中心化的,沒有中心服務(wù)器,這意味著每次配置和更新環(huán)境,只會去更新具體的庫,而不會有一個向中心服務(wù)器獲取***庫的索引這么個過程,如此一來,又省了很多時間。

「好了好了,如果還有第三個優(yōu)勢,我就被你說服,開始用 Carthage!」

第三個優(yōu)勢就是:與 CocoaPods 無縫集成!

「什么?一個項目使用兩套包管理工具,不會出差錯嗎?」

經(jīng)過我的親自試驗,我已經(jīng)非常***地將我的「奇點」項目改造成了 Carthage + CocoaPods 共同管理依賴這么一個配置。沒有絲毫沖突。

因為 Carthage 并不是像 CocoaPods 那樣一個全自動+全功能的第三方庫配置工具,它的設(shè)計哲學(xué)是,完成瑣碎的部分,并把主要控制權(quán)交給開發(fā)者,它不會像 CocoaPods 那樣一定會生成一個 Workspace,這意味著我可以自由地去控制 Framework 如何放進我的 Project/Workspace,是 Required 還是 Optional。當(dāng)我發(fā)現(xiàn) Carthage 是如此靈活后,我毫不猶豫地在當(dāng)前 CocoaPods 管理主要 Framework 的配置下,將少量其他 Framework 交給了 Carthage 管理。它們非常和諧地共存著。

事實上,我用 Carthage 還有一個主要原因,那就是創(chuàng)建第三方庫并讓 Carthage 可以使用實在是太簡單了,不需要弄像 CocoaPods 那樣結(jié)構(gòu)復(fù)雜+聲明文件式的模式,我只需要創(chuàng)建一個 Project/Framework,讓 Framework 這個 Scheme 設(shè)置成 Shared 就可以了。這樣,我的第三方庫的目錄非常干凈,沒有任何與 Carthage 有關(guān)的文件,Carthage 卻能去發(fā)現(xiàn)并使用它,我就喜歡這樣簡單純粹的技術(shù)解決方案。

以上,便是 Carthage 的第四個優(yōu)勢:結(jié)構(gòu)標準的項目天然就是 Carthage 庫。

列舉完這四大 Carthage 優(yōu)勢后,來談?wù)勊牟蛔悖?/p>

  • 庫依然不如 CocoaPods 豐富:盡管很多庫不需要聲明并改造就直接可以被 Carthage 用,但依然有大量 CocoaPods 能用的庫不支持,我相信時間能解決這個問題;
  • 只支持 Framework,所以是 iOS 8 Only 了,隨著時間推移,這個也不會是問題;
  • 工具仍不完善:在使用過程中,我發(fā)現(xiàn)它無法在一個結(jié)構(gòu)復(fù)雜的項目中正確發(fā)現(xiàn)庫(比如有 iOS, Mac demo + framework 的結(jié)構(gòu));
  • 無法在 Xcode 里定位到源碼:如果你在寫代碼過程中,想跳轉(zhuǎn)到一個第三方庫去看具體的實現(xiàn),這是無法辦到的,Carthage 的配置只能讓你看到一個庫的頭文件;

不知道這四個劣勢到底會在什么時候得到解決(第四個因項目配置原因我覺得是無法解決了),但是綜合上面提到的四大優(yōu)勢,Carthage 的使用還是讓我省時又省力了。

責(zé)任編輯:倪明
相關(guān)推薦

2011-03-21 09:01:49

CSS框架

2013-01-06 10:44:43

微軟Windows 8云計算

2016-03-30 11:51:55

2012-02-16 08:34:48

配線架

2011-11-18 10:17:00

openSUSE 12發(fā)布

2023-07-14 14:16:31

2013-05-20 08:56:13

2011-10-19 10:07:18

桌面虛擬化云計算

2011-10-21 13:59:48

Java云計算

2012-07-19 09:15:43

CloudStackEucalyptusvCloud Dire

2021-04-12 16:00:18

工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)

2021-09-17 10:50:14

容器 Linux

2016-12-09 09:23:50

android組件Service

2023-08-03 14:45:00

數(shù)字孿生

2009-02-19 16:50:20

虛擬化虛擬機操作系統(tǒng)

2010-09-10 10:10:36

CSS屬性

2009-09-15 10:59:10

LinQ to SQL

2010-11-25 10:55:34

2022-09-14 13:35:41

企業(yè)數(shù)據(jù)團隊
點贊
收藏

51CTO技術(shù)棧公眾號