您的当前位置:首页正文

【iOS 开发】给自己项目添加 Carthage 支持的方法

来源:图艺博知识网

Carthage 是一款 iOS 项目依赖管理工具,与 Cocoapods 有着相似的功能,可以帮助你方便的管理第三方依赖,它会把三方依赖编译成 framework ,以 framework 的形式将三方依赖加入到项目中进行使用和管理,下面记录一下项目添加 Carthage 支持的方法以及 Carthage 的使用方法,方便日后查看。


项目添加 Carthage 支持

1. 安装 Carthage

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

  • touch 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

  • carthage update --platform iOS
    

3. 工程配置

  • 打开工程 targetBuild Phases 配置,点击 + 选择 New Run Script Phase ,创建一个 Script ,添加以下内容:

    /usr/local/bin/carthage copy-frameworks
    
  • 然后添加相应的内容到下面的 Input Files(举例):

    $(SRCROOT)/Carthage/Build/iOS/ReactiveCocoa.framework
    
    image

4. Cathage 的目录结构

在使用 Carthage 管理 frameworks 时,工程根目录下与 Cartfile 同级的会存在 Cartfile.resolved 文件和
Carthage 文件夹,Carthage 文件夹又包含 BuildCheckouts两个文件夹。

  • Cartfile.resolved文件
    包含已经添加的 frameworks 信息,包括依赖名称和当前使用的版本信息。
  • Checkouts 文件夹
    包含所有 frameworks 源码信息,在执行 carthage build 时,会直接使用里面的 project 或者 workspace 相应的 scheme 来构建相应的 framework
  • Build 文件夹
    包含所有的二进制构建结果,包括 .framework 二进制文件和 .dSYM 等文件。

将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

Top