美文网首页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