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

Mav*_*arn 5 ios swift

现在我有一个项目,比如testApp,使用一些第三方库,比如alamofire和其他一些libs在objective-c中.

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

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

Include of non-modular header inside framework module 'testAppKit'
Run Code Online (Sandbox Code Playgroud)

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

小智 7

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

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

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

  1. 转到项目目录中的Dropbox.framework文件夹.
  2. 创建新文件夹"Modules"并进入内部
  3. 创建一个名为"module.modulemap"的文件

文件内容:

framework module Dropbox {
    umbrella header "Dropbox.h"

    export *
    module * { export * }
}
Run Code Online (Sandbox Code Playgroud)

在这之后我需要添加导入路径.

  1. 转到您的项目文件
  2. 选择嵌入式框架目标
  3. 转到"构建设置"并找到"Swift编译器 - 搜索路径"
  4. 添加Dropbox.framerowk的路径并设置"递归"选项.

我想在这里放一个截图,但我还不能这样做 - 因为我的"声誉";)

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

希望这可以帮到你 :)