首页 > 解决方案 > 如何在最新的 iOS 项目中使用旧的二进制库 TinyCrayon?

问题描述

我尝试在我的新 iOS 项目中使用TinyCrayon 。

该库由一个二进制库框架组成。TinyCrayon 自述文件中的框架链接已失效,但可以在此处找到。

当我将框架添加到我的项目并编译它时,会显示以下错误消息:

(使用真正的 iPhone 设备编译时:)

The following binaries use incompatible versions of Swift:
/…/TCMask.framework/TCMask
/…/Library/Developer/Xcode/DerivedData/.../Build/Products/Debug-iphoneos/….app/…

(使用模拟器编译时:)

/…/TCMask.framework/TCMask compiled with older version of Swift language (4.1/4.2) than previous files (5 or later) file ‘/…/TCMask.framework/TCMask' for architecture x86_64

我正在使用 Xcode 12.5.1
有人可以成功使用这个框架吗?

如果这个库的作者将它升级为使用 Swift 5 应该可以解决问题,但他似乎还没有维护这个项目。

潜在的根本原因

参考

如果您正在使用的框架/模块的开发人员尚未将他们的代码更新到 swift 5,那么切换回旧 Xcode 版本可能是最简单的。只需重命名当前的 Xcode 应用程序(例如,改名为 XcodeNew)。然后下载并安装旧版本 ( https://developer.apple.com/download/more/ )。它可能不是最好的解决方案,但在您可以更新使用的框架之前它会起作用。

Swift 还没有模块稳定性。这意味着 Swift 5 编译器可以编译为 Swift 4、4.2 和 5 编写的代码;但是,您不能混合和匹配使用旧版本编译器构建的代码。您需要确保使用 Xcode 10.2 中的 Swift 编译器重新构建应用程序的所有依赖项。

参考

(网站谷歌翻译)我还是有从旧文章下载旧版Xcode的经验,先编译成功再推送Git。

这篇文章的主题是关于Swift 4.1,Xcode 9.3 可以在Swift 中编程,我以为只是一个小更新不会有什么大不了的,但没想到我使用的Libray/Framework 出现了问题!!!Swift 的第四个版本提到 Charts 包超级好用。它需要用 Swift 4.0 编译,所以你必须去某个地方选择一个设置。今天更新到 Swift 4.1。

我尝试关注但没有成功

尝试#1

删除DerivedDataXcode 文件夹中的文件

尝试#2

设置Swift Language VersionSwift 4.0_Build Settings

尝试#3

安装最新的工具链(Swift 5.4.3)
并使用Preferences>中的工具链Components
(并且无法编译应用程序)
(我应该使用旧版本的Swift安装工具链,但我在网站上找不到)(而且Apple App Store应该拒绝Toolchain制作的应用程序?)

参考

从这里安装适用于您的特定 Xcode 版本的 Xcode 工具链。Xcode 工具链包括编译器、lldb 和其他相关工具的副本,这些工具提供了在特定版本的 Swift 中工作所需的内聚开发体验。打开 Xcode 的 Preferences,导航到 Components > Toolchains ,然后选择已安装的 Swift 工具链。这将让您现在编译并运行该应用程序。

尝试#4

在developer.apple.com下载旧的 Xcode 10.3
它无法在我的 macOS 11.4 上运行
显示错误弹出窗口:

Xcode quit unexpectedly while using the libMainThreadChecker.dylib plug-in

尝试#5

下载旧的 Xcode 10.3 后,
我将Preferences> Locations>设置Command Line ToolsXcode 10.3

尝试#6

将项目格式更改为 Xcode 8.0-compatible
ref

尝试#7

设置Build Libraries for DistributionYesin Build Settings
(应该由图书馆的作者而不是我来设置吗?)

标签: iosswiftxcodeswift4swift5

解决方案


推荐阅读