用Carthage构建自己的Framework

用Framework的方式来管理公共代码是个不错的选择,Framework的好处也是多多的:

  • 本质上是个bundle,不仅可以打包代码,还可以打包资源Assets、视图XIB等
  • 可以有选择的开放头文件、接口,避免了用CocoaPods集成子项目时,所有代码全部暴露的问题,只暴露需要的,代码更加清晰。
  • 从iOS 8开始支持的Cocoa Touch Framework可以支持动态Framework,能在主App和各种Extension之间共享一份二进制目标代码,加快应用加载速度,减小体积,加快编译速度等。

基于Cocoa Touch Framework动态框架的种种优点,“去中心化”的轻量级依赖包管理工具,Carthage也越来越受欢迎。

创建Framework

创建Framework的过程非常简单,Xcode 6以后就有了Framework项目模板,直接选中”Cocoa Touch Framework”模板,按照提示来即可。Swift的话,将要暴露的类、方法标记public,OC的话在Build Phases - Headers - Public 加入需要暴露的头文件即可。

使用Carthage创建Framework

Carthage只支持构建标记为“Shared”的项目Target,所以创建好了Framework工程后,还要设置Scheme为“Shared”,可以在当前Scheme的Edit Scheme里面设置,也可以在Xcode的菜单 Product - Scheme - Manage Schemes 里面设置。
然后将Framework工程推送到Git仓库中,记住打上版本号tag。

git tag 0.1.0
git push origin master --tags

下面有一篇详细教程:

Matt Condon’s Blog - Making Carthage-compatible Frameworks with Swift
总结一些iOS项目中组织代码的方法