编辑
如何使用Carthage解决嵌套的库依赖
本文访问次数:0

由于某些原因,比如对常用库的封装,对资源的封装等,公司A将这些常用代码和资源打包成了一个framework文件(下文称之为Base.framework),这样其他项目可以更方便引用。针对这种情况,我认为Carthage是最好解决方案。使用此解决方案后,项目的结构非常清晰简洁:

Project
    - Project
        - AppDelegate
        ...
    - Frameworks
        - Base
        - Toast
        - MBProgressHUD
        ...

Base的项目结构如下

Base 
    - Base
    - Frameworks
        - Toast
        - MBProgressHUD

再对比一下使用这个方案之前,采用Umbrella Framework方案的结构:

Project
    - Base
        - Frameworks 
            - Toast
            - MBProgressHUD
    - Project
        - AppDelegate
        ...
    - Frameworks
        - Base
            - Toast
            - MBProgressHUD
        ...

不使用Umbrella Framework的话就是下面这样:

Project
    - Base
        - Frameworks 
            - Toast
            - MBProgressHUD
    - Project
        - AppDelegate
        ...
    - Frameworks
        - Base
        - Toast
        - MBProgressHUD
        ...

Carthage的具体使用方法可以查看GitHub官方主页:Carthage,这里只说一下嵌套依赖需要注意的地方:

  • Base.framework文件夹内不应该出现Frameworks文件夹和其它framework文件
  • Base.framework项目不需要添加Run Script Phases1,把该流程加在具体项目上
  • 如果Base.framework引入了其它framework文件(而不是通过源码打包生成的),需要手动拖入具体项目里。

举个例子:国外Github国内oschina,clone后执行carthage update即可查看效果。


  1. 1.选中项目target,进入Build Phases页,点击加号,选择New Run Script Phase,输入以下内容:
    /usr/local/bin/carthage copy-frameworks
    在下方的Input Files一栏中,添加所有使用Carthage打包的framework文件,例如:
    $(SRCROOT)/Carthage/Build/iOS/BaseSample.framework $(SRCROOT)/Carthage/Build/iOS/Toast.framework $(SRCROOT)/Carthage/Build/iOS/MBProgressHUD.framework

需要输入验证码才能留言

没有任何评论