ios - 模块 XXX 未使用库演化支持构建

标签 ios swift xcode swift-package-manager

我的 iOS 应用程序有两个依赖项( AlamofireCharts ),它使用 Swift Package Manager 合并。 当我构建它时,无论何时导入有问题的模块,我都会收到此警告,例如:

import Alamofire

Module 'Alamofire' was not compiled with library evolution support; using it means binary compatibility for 'YourApp' can't be guaranteed

我不明白的是:

  1. 为什么这个二进制兼容性是一个问题,如果我的应用使用 SwiftPM 从源代码构建依赖项(而不是嵌入作为二进制文件分发的框架),并且
  2. 我该怎么办?

Alamofire 存储库的问题线程表明,库演进支持无法添加到当前版本,因为它阻碍了开发,但在之前的主要版本 (4) 中支持它。也许这可能是一种解决方法,但我不想执行因降级 Alamofire 而对我的应用程序造成的主要代码修改。

最佳答案

我认为重点是,通过二进制兼容性,我们不必将 Swift 语言框架嵌入到应用程序中;即使语言将来发生变化,系统 Swift 语言框架也将继续为您的应用程序工作,而无需您重新编译应用程序。因此得名“库进化”。

因此,如果没有这种保证,该语言将被嵌入到应用程序中,从而扩大其大小并失去二进制稳定性的其他优势,例如应用程序在改进系统框架时利用系统框架中更快的代码的能力 future 等等

您可以通过构建应用程序并查看其内部来测试该理论。

所以,如果我没理解错的话,这就是 Alamofire 阻碍你的意义,并解释了这个警告。

关于ios - 模块 XXX 未使用库演化支持构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62379906/

相关文章:

xcode - Mac OS X Lion 没有/usr/include 文件夹?

ios - UIStackView:添加具有相同宽度的排列 View

ios - UIButton 水平居中,自动换行

objective-c - didAddAnnotationViews 不适用于 MKMapView

ios - 在日历中的日期之间添加多个事件 - IOS

ios - OAuthSwift WKWebView 不断循环打开和关闭

javascript - Mac 上的 Jekyll 没有管理员访问权限(没有自制软件、Ruby、Rvm、cURL)

swift - 应该在哪里使用循环来生成 SwiftUI 预览的虚拟数据?

ios - 如何在 UIWebView 中编辑 HTML?

ios - 如何在 XCode 4.6.3 上添加 Apple ID 帐户?