使用Carthage發布Framework

jopen 10年前發布 | 11K 次閱讀 Carthage iOS開發 移動開發

最近開始嘗試使用 Carthage 來管理 Swift 項目中的依賴包,對于這種去中心化的包管理還是比較喜歡的,因為很多時候項目的依賴就比較簡單,雖然 CocoaPods 提供更多的功能,但是在現有的網絡環境下,下載或者更新一次還是比較麻煩的。

因為 Carthage 旨在用最簡單的方式添加frameworks到Cocoa應用,所以官方只支持Dynamic frameworks。Dynamic frameworks在 OSX 上支持任何版本,iOS 上只支持 iOS8 及以上版本。

加上最近在寫一個 HTTPDNS 的庫,就想嘗試一下使用 Carthage 來發布相應的包。

創建 Framework 工程

由于 Carthage 沒有中心化的package list,沒有項目說明格式,大部分frameworks應該自動構建。 HTTPDNS 項目一開始使用的還是之前 CocoaPods 的開發思維,沒有創建一個Dynamic frameworks,所以切換到 Carthage 的第一步就是將工程轉換成Dynamic frameworks。

轉換的方式其實也不復雜,就是新建一個Project,并選擇Framework & Library中的Cocoa Touch Framework,其他的設置跟新建其他項目一致,新建完項目后就把原有的代碼放到Framework工程中,能 Build 成功就基本沒問題了。

Carthage 對于framework的特定要求

分享你的 Xcode schemes

Carthage 只構建從.xcodeproj分享出來的 Xcode schemes。可以通過運行carthage build --no-skip-current來檢測所有的 intended schemes 是否構建成功,然后檢查Carthage/Build文件夾。

如果運行命令的時候,一個重要的scheme沒有構建成功,打開 Xcode 在構建菜單選擇Manage Schemes(如下圖)

 使用Carthage發布Framework

對于需要構建的scheme勾選Shared(如下圖)

這樣 Carthage 可以發現它。

解決構建失敗

如果運行carthage build --no-skip-current時遇到構建失敗,嘗試運行xcodebuild -scheme SCHEME -workspace WORKSPACE build或者xcodebuild -scheme SCHEME -project PROJECT build (用具體值)看是否出現同樣的錯誤。這很有可能提供足夠的信息來解決問題。

如果 Apple developer tools 安裝有多個版本(比如安裝了Xcode beta),使用xcode-select來選擇 Carthage 最終使用哪個版本。

給穩定版本打標簽

Carthage 通過搜索發布到倉庫中的tag來決定framework的哪個版本是可用的,并試著將每個tag翻譯成semantic version。比如,tag v1.2,語義版本是1.2.0。

沒有數字版本號的tag,或者 有任何字符跟在數字版本號后邊(比如:1.2-alpha-1)目前是不支持的,將會被忽略。

將預構建的 frameworks 歸檔到 zip 文件

如果依附于一個 GitHub Release,Carthage 自動使用預構建framework,而不是從頭構建。

為了給預構建framework提供一個指定的tag,所有支持的平臺的二進制文件被壓縮成一個archive,這個archive依附于一個發布的響應那個tag的Release。附件應該包含.framework在它們的名字(比如:ReactiveCocoa.framework.zip),來表明 Carthage 它包含了二進制包。

聲明你的兼容性

如果想聲明你的項目支持 Carthage,可用添加一個兼容性的 badge 到 README文件,只需簡單插入如下 Markdown:

![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)

CarthageKit

Carthage 大部分的功能都被打包到一個稱作 CarthageKit 的 framework 中了。 如果喜歡使用 Carthage 作為另一個工具的一部分,或者擴展 Carthage 的功能,看一下 CarthageKit 源碼中的 API 是否符合你的需求。

參考:

  1. Carthage README
  2. (譯)Carthage 使用說明

原文鏈接:http://blog.yourtion.com/public-frameworks-with-carthage.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!