Swift 桥接头文件不适用于 use_frameworks

Swift bridging header file won't work with use_frameworks

我正在尝试使用 GoogleidentityToolkit 库来处理登录。我启用use_frameworks!在我的 pod 文件上,但是找不到模块 GITkit。我想弄清楚发生了什么。据我所知,如果你使用 "use_frameworks" 你不需要创建任何桥接头文件,因为 cocoapods 将库编译成一个模块,所以稍后你可以像往常一样导入你的 *.swift 个文件。

在 Swift 中使用 Google Identity Toolkit 库需要什么?


这个问题是在 CocoaPods 1.0.0 发布一周后提出的(当时 CocoaPods 0.39.0 还很流行),Google Identity Toolkit 的可用版本是 1.1。 3 从 2015 年开始,但在 Google I/O 2016.

之后弃用了 Firebase 身份验证 (pod 'FirebaseUI/Auth')
  1. 将新文件添加到 Xcode(文件 > 新建 > 文件),然后 select“源”并单击“头文件”。
  2. 将文件命名为“YourProjectName-Bridging-Header.h”。
  3. 创建文件。
  4. 导航到您的项目构建设置并找到“Swift 编译器 – 代码生成”部分。您可能会发现在搜索框中输入“Swift Compiler”以缩小结果范围会更快。注意:如果您没有“Swift Compiler – Code Generation”部分,这意味着您可能还没有将任何 Swift classes 添加到您的项目中。添加 Swift 文件,然后重试。
  5. 在“Objective-C Bridging Header”旁边,您需要添加头文件的 name/path。如果您的文件位于项目的根文件夹中,只需将头文件的名称放在那里。示例:“ProjectName/ProjectName-Bridging-Header.h”或简单的“ProjectName-Bridging-Header.h”。或者,只需将桥接头文件从查找器拖放到此空字段。这样会自动添加桥接头文件的路径。
  6. 打开您新创建的桥接头并使用#import 语句导入您的Objective-C classes。此文件中列出的任何 class 都可以从您的 swift classes 访问。

A) 创建一个名为 Header 的桥接文件 "ProjectName-Bridging-Header.h" 在项目的根文件夹中。

B) 转到项目构建设置并设置以下值:

  • "Install objective-c compatibility header" :
  • "Objective-C Bridging Header" : 你的桥接路径 header(例如 "ProjectName/ProjectName-Bridging-Header.h"

之后您可以使用 header 文件导入您想要在 swift 代码中使用的所有 ObjectiveC 文件。

注意:如果需要,在资源 headers 和 Swift 编译器搜索部分中将路径设置为递归路径。

首先在您的项目根级别创建名为 "projectname-bridging-header.h" 的桥接头文件。

现在在构建设置中设置桥接头文件路径及其 objc 兼容性头文件。

完成后,清理并构建您的项目,它的工作正常。

我发现的最简单的方法是在 XCode 中创建一个伪造的 .swift 文件。这应该会提示自动创建桥接头。

  1. 文件 > 新建 > 文件...
  2. 对于文件类型,选择Swift
  3. 允许Xcode手动创建Swift桥接头
  4. 删除您最初创建的 .swift 文件。

Swift 4 和 Xcode 9.3

  1. 创建桥接头文件:

    • Xcode> File/New.../File> 头文件
    • 将文件命名为 "ProjectName-bridging-header.h"
    • 保存到项目文件夹的根目录
  2. Xcode> 转到构建设置(在项目资源管理器窗格中 select 最上面的项目,应该是您的项目名称,在右侧窗格中 select "Build Settings" 主题)

    • 在 "Build Setting" 下面确保 "All" 和 "Combined" 是 selected
    • 在搜索框中键入 "swift compiler" 并找到 "Objective-C Bridging Header" 项
    • 折叠它并双击它右侧的编辑
    • 在上面插入1.的文件名 -> "ProjectName/ProjectName-bridging-header.h"(如果桥接文件保存在工程中,请注意文件夹路径文件夹)
  3. 包括需要的#import

None 以上答案对我有用或不够精确。 在 Xcode 11.4 (Swift 5.2) 这个解决方案对我有用:

1. 在项目的根目录中创建一个新的 header 文件。我不确定文件的名称是否真的重要,但 Apple 的 auto-generated 桥接 header 文件被命名为“ProjectName-Bridging-Header.h”。

2. 将您需要的所有导入添加到新创建的文件中。

3. 在 Project Navigator 中单击您的项目名称。

4. 在最上面的栏中选择“Build settings”,然后在稍低的栏中选择 全部 合并

5.右上角搜索“Swift编译器

6.找到“Swift Compiler-General”选项卡,展开并double-click右边“Objective-C 桥接 Header”的一侧。

7. 您现在需要做的就是将您创建的桥接 header 文件拖到 pop-up window然后点击进入。大功告成!

*请记住,每次项目的直接路径更改时,您都必须更新桥接 Header 的路径