首页 > 解决方案 > 模块 XXX 未使用 Library Evolution 支持构建

问题描述

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

import Alamofire

模块“Alamofire”未在库演化支持下编译;使用它意味着无法保证“YourApp”的二进制兼容性

我不明白的是:

  1. 如果我的应用程序使用 SwiftPM(不嵌入作为二进制文件分发的框架)从源代码构建依赖项,为什么这种二进制兼容性会成为问题,以及
  2. 我该怎么办?

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

标签: iosswiftxcodeswift-package-manager

解决方案


我认为关键在于通过二进制兼容性,我们不必将 Swift 语言框架嵌入到应用程序中。系统 Swift 语言框架将继续为您的应用程序工作,即使该语言在未来发展,您也无需重新编译应用程序。因此名称,图书馆演变。

因此,如果没有这种保证,该语言将被嵌入到应用程序中,使其体积膨胀并失去二进制稳定性的其他优势,例如当您的应用程序在未来改进时利用系统框架中更快的代码的能力, ETC。

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

所以如果我做对了,这就是 Alamofire 阻碍你的意义,并解释了警告。


推荐阅读