ios - 模块 XXX 未使用 Library Evolution 支持构建
问题描述
我的 iOS 应用程序有两个依赖项(Alamofire和Charts),它使用 Swift 包管理器进行合并。当我构建它时,无论我导入有问题的模块,我都会收到此警告,例如:
import Alamofire
模块“Alamofire”未在库演化支持下编译;使用它意味着无法保证“YourApp”的二进制兼容性
我不明白的是:
- 如果我的应用程序使用 SwiftPM(不嵌入作为二进制文件分发的框架)从源代码构建依赖项,为什么这种二进制兼容性会成为问题,以及
- 我该怎么办?
Alamofire 存储库的问题线程建议不能将 Library Evolution 支持添加到当前版本,因为它会阻碍开发,但它在以前的主要版本中得到支持 (4)。也许这可能是一种解决方法,但我不想执行因降级 Alamofire 而对我的应用程序造成的主要代码修改。
解决方案
我认为关键在于通过二进制兼容性,我们不必将 Swift 语言框架嵌入到应用程序中。系统 Swift 语言框架将继续为您的应用程序工作,即使该语言在未来发展,您也无需重新编译应用程序。因此名称,图书馆演变。
因此,如果没有这种保证,该语言将被嵌入到应用程序中,使其体积膨胀并失去二进制稳定性的其他优势,例如当您的应用程序在未来改进时利用系统框架中更快的代码的能力, ETC。
您可能可以通过构建应用程序并查看它来测试该理论。
所以如果我做对了,这就是 Alamofire 阻碍你的意义,并解释了警告。
推荐阅读
- python - 尝试训练模型时出现 TensorFlow 错误
- javascript - 检测文件是否包含图像数据
- postman - 如何从数组中检查 postman 中的 post 方法
- html - 如何创建三个部分的单行列表项,中间部分用省略号换行?
- r - 自定义 ggplot 图例
- linux - Linux 如何从父目录执行 bash 脚本?
- php - 如何使用 Laravel Cashier 将订阅传递给其他用户
- javascript - 将选择值与 Angular 4 中的 ngModel 相关联
- python - 日期时间的对数轴不起作用
- android - 安卓应用本地化。多个国家的一串资源