ios - CryptoSwift 被两个私有第三方框架使用
问题描述
我有两个使用 CryptoSwift 的私有框架(第 3 方)。
框架 1 建议使用 cocoapods 安装,而框架 2 建议使用 carthage。
使用 cocoapods 安装时,Framework 2 在设备上运行时抛出以下错误:dyld: Symbol not found: _$s11CryptoSwift7PaddingO5pkcs7yA2CmFWC
引用自:/private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB-8EE7-D49767C0630F/Redacted/Frameworks/Framework1.framework/FMService
预计在:/private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB 中的 /private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB-8EE7-D49767C0630F/Redacted/Frameworks/CryptoSwift.framework/CryptoSwift -8EE7-D49767C0630F/Redacted/Frameworks/Framework1.framework/FMService
使用 carthage 安装 CryptoSwift 时从框架 2 中抛出相同的问题:dyld: Symbol not found: _$s11CryptoSwift7PaddingO5pkcs7yA2CmFWC
引用自:/private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB-8EE7-D49767C0630F/Redacted/Frameworks/Framework2.framework/GWService
预计在:/private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB 中的 /private/var/containers/Bundle/Application/94E49A38-E3C0-4CDB-8EE7-D49767C0630F/Redacted/Frameworks/CryptoSwift.framework/CryptoSwift -8EE7-D49767C0630F/Redacted/Frameworks/Framework2.framework/GWService
解决方案
这是一个传递依赖问题,由于不同的依赖管理器(Cocoapods 和 Carthage)不知道彼此的依赖图并尝试链接同一个框架两次。我认为除了开箱即用之外没有简单的解决方案
a) 使用单一的依赖管理器
b) 手动设置所有依赖项
推荐阅读
- jenkins - 使用 Kustomize 部署现有作业
- vue.js - ELEMENT IO 全选按钮还选择不同列中的复选框
- c# - ASP.NET Core:HtmlHelper 扩展(迁移问题)
- node.js - 无法使用 MongoDB 和 Node.js 在循环内迭代异步函数
- c# - 应用程序配置文件未保存
- java - java中是否有任何方法可以检查字符串是否为数字?
- python - python3.7 使用 asyncio 和 aiohttp 从 URL 中提取批量标题
- gnuplot - 使用 gnuplot 重新采样数据
- python - 如何正确使用 gensim 的 deaccent 方法?
- laravel - 如何在 Laravel 5.7 中使用现有数据库