【发布时间】:2018-05-29 22:02:19
【问题描述】:
简介
我正在开发SDK.framework,我需要将其作为闭源软件进行分发。为了涵盖objective-c和swift项目,我决定在objective-c上写它
在本地环境中我有两个项目:
- SDK(框架源代码)
- DemoApp(与 SDK.framework 链接的应用)
*这些项目在单独的工作区中
问题
当我在本地编译 SDK.framework 时,它可以完美运行。
一旦我从 CI 获得一个(它具有不同的 iOS SDK 版本)并尝试将其与 DemoApp 链接我收到此错误:
ld:SDK.framework 使用旧版本的 Swift 语言 (4.0) 编译,而不是以前的文件(未知 ABI 版本 0x06)
问题
- 因为我的 SDK 100% objective-c 框架,我不知道为什么它声称 swift 版本
- 我的 SDK 依赖于另一个框架,其中一个是
SocketIO-Client-Swift。 AFAIK 这应该与上面的错误无关,因为我用DemoApp编译SocketIO-Client-Swift,所以它与DemoApp应用程序具有相同的swift 版本
我做了什么
- 我用
otool -l SDK.framework检查了所有元信息,没有任何对swift的引用 - 我已经尝试将它作为静态库分发,但在这种情况下,我会遇到支持
Carthage依赖管理器的问题
【问题讨论】:
-
用新的 Xcode 版本重新编译它。
-
@JuanBoero 对我来说不是这样,因为这是作为框架(二进制)提供的 SDK,根据您的建议,我需要为任何微小的 libSwift 更改发布一个新版本跨度>
标签: ios objective-c swift xcode linker