首页 > 解决方案 > 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

标签: iosswiftframeworks

解决方案


这是一个传递依赖问题,由于不同的依赖管理器(Cocoapods 和 Carthage)不知道彼此的依赖图并尝试链接同一个框架两次。我认为除了开箱即用之外没有简单的解决方案

a) 使用单一的依赖管理器

b) 手动设置所有依赖项


推荐阅读