【问题标题】:How to create Touch Framework or Static Lib that includes Swift and ObjC code and build for iOS7?如何创建包含 Swift 和 ObjC 代码并为 iOS7 构建的 Touch 框架或静态库?
【发布时间】:2015-03-13 16:24:10
【问题描述】:

我想创建一个单独的库,其中大部分包含 Objective-C 代码,但也包含一些 Swift 文件。我尝试使用 Xcode 6 的 Touch Framework,如果我的部署目标在最终产品中 >= iOS8.0,它工作得很好。

但我需要为 IOS7 构建,但由于 iOS7 不支持链接/加载 dylib 的解释而失败。

之后我创建了静态库目标,但问题是它不支持 swift 文件(swift 模块)。

任何想法如何使它适用于 iOS7?

【问题讨论】:

  • 你有头文件吗?
  • 你是否在 Xcode 6 中开启了“Embedded Content Contains Swift Code”构建设置?
  • @ricardopereira 是的,我确实有很多 ObjC 头文件,将尝试使用静态库并打开“嵌入内容包含 Swift 代码”。如果我成功或不成功,将在此处发布。

标签: objective-c swift frameworks static-libraries dynamic-library


【解决方案1】:

尽管 Apple 说静态库不支持 Swift,但经过几天的尝试,我还是找到了以下解决方案。

如果我尝试使用从 Xcode 构建的 swift 文件构建静态库,则无法解释“libtool”不知道 -Xlinker 参数(-Xlinker 中的未知选项字符“X”)。该参数尝试指定 Swift 模块 - 正如 Apple 所说,静态库不支持该模块。

我所做的是将整个 libtool 命令(Xcode 试图使用的)复制/粘贴到终端,删除所有“-XLinker ...”参数,并且令人惊讶地从命令行构建成功。

我的静态库项目包括 Objective-C 和 Swift 源代码,它们都被“打包”到生成的静态库中!

唯一的缺点是没有生成 Swift 模块,但在我的情况下这并不重要,因为 Swift 仅在内部使用 - 我只有 Objective C 外部接口。

我认为也可以通过沿生成的静态库复制生成的静态库桥接头来公开 Swift“接口”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2015-04-23
    • 2018-04-15
    • 2021-02-26
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多