如何在swift的iOS嵌入式动态框架中使用第三方库

时间:2014-11-19 03:53:34

标签: ios swift

现在我有一个项目,比如testApp,使用像alamofire这样的第三方库,以及在objective-c中使用其他一些库。

现在我想添加一个今天的小部件。根据一些教程,我创建了一个新的目标" testAppKit"作为共享动态框架,目标" testAppWidget"作为今天的延伸。公共代码将在testAppKit中重用。

现在我需要在testAppKit中使用第三方库。并在testAppKit的构建阶段添加了lib和header。然后我在testAppKit.h中添加#import <theLib/TheHeader.h>。但是有一个错误:

Include of non-modular header inside framework module 'testAppKit'

所以,我想知道如何在这种嵌入式动态框架中使用第三方库(可能在Swift或Objective-C中)。

1 个答案:

答案 0 :(得分:7)

我在我的应用程序中使用Dropbox Datastore API,最后我使用它来嵌入Cocoa Touch框架来共享Containing App和Today Extension的代码。

我发现在嵌入式框架中的Swift文件中,我可以导入项目中的任何第三方框架(即Farbic.framework,Crashlytics等),但不能导入Dropbox。

有什么区别? “Modules”文件夹! Dropbox.framework不提供模块映射文件。所以我根据Fabric.framework中的内容创建了它:

  1. 转到项目目录中的Dropbox.framework文件夹。
  2. 创建新文件夹“模块”并进入
  3. 创建一个名为“module.modulemap”
  4. 的文件

    文件内容:

    framework module Dropbox {
        umbrella header "Dropbox.h"
    
        export *
        module * { export * }
    }
    

    完成后我需要添加导入路径。

    1. 转到您的项目文件
    2. 选择嵌入式框架目标
    3. 转到“构建设置”并找到“Swift编译器 - 搜索路径”
    4. 添加Dropbox.framerowk的路径并设置“递归”选项。
    5. 我想在这里放一个截图,但我还不能这样做 - 因为我的“声誉”;)

      现在我可以在swift文件中执行“导入Dropbox”:)

      希望这可以帮助你:)