【iOS 開發】給自己項目添加 Carthage 支持的方法

Carthage 是一款 iOS 項目依賴管理工具,與 Cocoapods 有着相似的功能,可以幫助你方便的管理第三方依賴,它會把三方依賴編譯成 framework ,以 framework 的形式將三方依賴加入到項目中進行使用和管理,下面記錄一下項目添加 Carthage 支持的方法以及 Carthage 的使用方法,方便日後查看。


項目添加 Carthage 支持

1. 安裝 Carthage

可以到 Carthage 項目 下直接下載 Carthage.pkg 文件安裝,或者使用 Homebrew 方式安裝,終端輸入以下命令進行安裝。

brew update
brew install carthage

2. 創建一個支持 Carthage 的工程

  • Carthage 僅支持 dynamic frameworks 也就是動態庫,可以新建一個工程或者在現有工程下創建一個新的 target ,類型需要選擇 Coaoa Touch Framework
image
  • 打開項目配置,選擇 framework targetBuild Phases ,將需要暴露的 .h 文件拖拽到 Public 裏面,將相應的 .m 文件拖拽到 Compile source 裏面。
  • 如果你的 framework target 名稱與你想要打包構建的 framework 名稱不一致,選中 Build Settings 選項卡,搜索 Packaging ,把 Produce Module NameProduce Name 改成你想要構建的 framework 名稱。
  • 如果你使用了類別,那麼你需要在 Build SettingsLinkingOther Linker Flags 里加上 -all_load
  • 如果你想你的工程支持 bitcode ,需要在 Other C Flags 里加上 -fembed-bitcode
  • 由於 Carthagebuild 時,會自動將設置爲 Sharedframework target 構建成 framework ,所以需要單擊頂部 target ,在彈出選項中選中 Manager Schemes ,將 framework targetShared 選項選中。

3. 構建 framework

  • 打開終端 cd 到工程目錄下,執行以下命令開始打包 framework ,執行完成後會自動將 framework 文件保存在工程的 Carthage/Build 文件夾下。

    carthage build --no-skip-current
    
  • 然後將生成的 framework 文件拖進測試項目進行測試即可,具體就不說了。

4. 發佈並打上 tag

  • 測試沒問題後,將工程 push 並打上 tag 即可,tag 名稱必須是版本號。

    git tag 1.0.0
    git push --tags
    
  • 這樣你的項目就已經支持 Carthage 了,其他開發者就可以使用 Carthage 來管理你的項目依賴了,只需要將 framework 工程 push 上去即可,打包生成的測試 framework 文件不需要 push

使用 Cathage 依賴第三方庫

1. 創建並編輯 Cartfile

  • 在工程目錄下創建一個名爲 Cartfile 的文件,可以使用以下命令創建。

    touch Cartfile
    
  • 然後在 Cartfile 文件中指明想要依賴的第三方庫。

    github "ReactiveCocoa/ReactiveCocoa" // 不指定版本
    github "ReactiveCocoa/ReactiveCocoa" >= 1.0.0 // 大於等於 1.0.0 版本
    github "ReactiveCocoa/ReactiveCocoa" ~> 1.0.0 // 1.0.0 及以上的兼容版本 < 2.0.0
    github "ReactiveCocoa/ReactiveCocoa" == 1.0.0 // 指定爲 1.0.0 版本
    github "ReactiveCocoa/ReactiveCocoa" "branch" // 指定特定的分支、tag
    

2. 更新並構建 framework

  • 編輯完成後,在終端中 cdCartfile 所在目錄下,執行以下命令構建第三方庫的 framework

    carthage update --platform iOS
    
  • 執行完成後會自動將第三方庫 cloneCarthage/Checkouts 文件夾下,然後會自動打包成相應的 framework 文件,打包完的文件會保存在 Carthage/Build 文件夾下。

3. 工程配置

  • 打開工程 targetGeneral 配置,將 Carthage/Build 下生成的 framework 文件拖拽到 Linked Frameworks and Libraries 選項中。

  • 打開工程 targetBuild Phases 配置,點擊 + 選擇 New Run Script Phase ,創建一個 Script ,添加以下內容:

    /usr/local/bin/carthage copy-frameworks
    
  • 然後添加相應的內容到下面的 Input Files(舉例):

    $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
    
    image
  • 這個腳本是爲了處理 App Store 提交的 bug,解決 App 因爲使用的 frameworks 包含二進制圖像的 iOS 模擬器在提交 App Store 時會被自動拒絕的問題。

4. Cathage 的目錄結構

在使用 Carthage 管理 frameworks 時,工程根目錄下與 Cartfile 同級的會存在 Cartfile.resolved 文件和
Carthage 文件夾,Carthage 文件夾又包含 BuildCheckouts兩個文件夾。

  • Cartfile.resolved文件
    包含已經添加的 frameworks 信息,包括依賴名稱和當前使用的版本信息。
  • Checkouts 文件夾
    包含所有 frameworks 源碼信息,在執行 carthage build 時,會直接使用裏面的 project 或者 workspace 相應的 scheme 來構建相應的 framework
  • Build 文件夾
    包含所有的二進制構建結果,包括 .framework 二進制文件和 .dSYM 等文件。

將來的你,一定會感激現在拼命的自己,願自己與讀者的開發之路無限美好。

我的傳送門: 博客簡書微博GitHub

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章