美文网首页swift 文章收集iOS Developer
让现有的 Swift 项目支持 Carthage

让现有的 Swift 项目支持 Carthage

作者: Linsw | 来源:发表于2016-12-01 17:35 被阅读585次

Table of Contents

<a id="1"></a>Introduction

Carthage作为Cocoa的依赖管理器,相比于CocoaPods,对项目的改变更少。Carthage的安装可以参考这里
我们可以很方便地管理第三方依赖,但是该如何让自己写的框架支持Carthage,供其他人使用呢?本文将主要介绍为已有的项目添加Carthage支持。

<a id="2"></a>前提条件

如果是第一次写框架(framework),要记得将需要暴露给用户的接口(interface)用public修饰,因为各个类和变量的默认修饰符是internal,如果直接生成.framework的话,是没办法使用这些类和变量的。

<a id="3"></a>第一步:为项目新建Target

原有的项目已经有一个target了,要生成framework的话,就需要在新建一个framework的target。如下图:


Framework & Library里选择Cocoa Touch Framework

设置好framework的名称:

<a id="4"></a>第二步:选择framework包含的文件

在项目的target中选中刚刚新建的framework target,在Build Phases里,确保添加了需要编译到framework里面的文件:

<a id="5"></a>第三步:分享target

在左上角停止按钮旁,点击target,选择Manage Schemes,勾选要分享的Scheme:

<a id="6"></a>第四步:生成framework

在项目的根目录里打开终端,运行

$ carthage build --no-skip-current

运行后,会在下面的目录里生成framework:

Carthage/Build/iOS/

<a id="7"></a>第五步:测试framework

这一步只是为了检验framework是否可用,虽然不做也是可以的,但是以防万一还是测试一下吧。
新建一个test项目,把刚刚生成的.framework拖到test项目左边的navigation栏里:

这时候如果运行出错的话,别紧张:

需要在Build Phases里新建一个New copy file phase并添加framework:

之后就可以测试framework了,可以写一些代码,看看framework里的东西能不能用。

<a id="8"></a>最后一步:生成release

到Github网页上,在项目的release页面,新建一个release,并给这个release一个版本号,如v1.0:

填写版本号,Release title,Describe this release,点击Publish release就行:

这样就可以通过Carghage来导入framework了。例如,在项目根目录新建一个cartfile文件,在里面写入

github "LinShiwei/ImageSlider"

再在项目根目录的终端里运行:

$ carthage update

Carghage就会自动下载framework到项目目录下。具体的添加过程可以看这里:Carthage/Carthage

感谢您的阅读,有任何疑问可以在下方的评论区问我,欢迎访问我的github

相关文章

网友评论

  • 半边枫叶:不错,很赞
  • ysCharles:请教一下 我已经按照你的步骤是自己的 framework 支持了 carthage
    但是我又遇到一个新的问题 ,我的 framework 里打算分装一些常用的三方库,我应该怎么在我的 framework 里处理,才能让我的 framework 关联到三方库
    ysCharles:大神,可能我的问题没有描述太清楚,我并不是想要把三方库直接打包到我的 framework 中去。 而是能不能通过做依赖的方式 弄进去,比如我的 framework 里依赖了AFNetworking库,我能不能做些什么依赖设置,在我用 carthage 打包自己的 framework 的时候,去把 AFNetworking 也给弄下来
    ysCharles:@Linsw 谢谢
    Linsw:Apple 不鼓励在自己的库中封装其他人的库,因为这样会导致很多问题。比如,有多个库都封装了同一个第三方库,当一个项目导入这几个库的时候,就会重复引用这个第三方库。如果确实想这么做的话,Xcode也提供了方法。这里有人做了回答http://stackoverflow.com/questions/34681435/how-to-add-a-framework-inside-another-framework-umbrella-framework。

本文标题:让现有的 Swift 项目支持 Carthage

本文链接:https://www.haomeiwen.com/subject/lboxmttx.html