CocoaPods和SwiftPM中的重复符号 [英] Duplicate symbols with CocoaPods and SwiftPM

查看:89
本文介绍了CocoaPods和SwiftPM中的重复符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从Xcode11开始,我们就一直从CocoaPods迁移到SwiftPM.不幸的是,某些依赖项还没有SwiftPM支持.像Firebase .

Ever since Xcode11 we've been migrating from CocoaPods to SwiftPM. Unfortunately some of the dependencies don't have SwiftPM support yet. Like Firebase.

这不是一个真正的问题,因为它们可以彼此并存.
但是,由于(我认为Firebase iOS SDK v6.13.0),他们向 PromisesObjC 添加了依赖项.
这本身不是问题,但是我们的大多数项目(和(子)依赖项)都使用 google的承诺通过SwiftPm.

This isn't a real problem, since both of them can coexist next to eachother.
But since (I think Firebase iOS SDK v6.13.0) they added a dependency to PromisesObjC.
Which in itself isn't a problem, but most of our projects (and (sub)dependencies) use promises by google through SwiftPm.

现在的问题是, Promise SwiftPM依赖项和 Firebase CocoaPods都使用了 FBLPromises ,这将导致以下错误:

Now the problem is that both the Promises SwiftPM dependency and Firebase CocoaPods one uses FBLPromises and this will result in the following error:

duplicate symbol '_FBLPromiseRetryDefaultAttemptsCount' in:
    /path/Products/Debug-iphonesimulator/FBLPromises.o
    /path/Products/Debug-iphonesimulator/PromisesObjC/libPromisesObjC.a(FBLPromise+Retry.o)
duplicate symbol '_FBLPromiseRetryDefaultDelayInterval' in:
    /path/Products/Debug-iphonesimulator/FBLPromises.o
    /path/Products/Debug-iphonesimulator/PromisesObjC/libPromisesObjC.a(FBLPromise+Retry.o)
duplicate symbol '_FBLWaitForPromisesWithTimeout' in:
    /path/Products/Debug-iphonesimulator/FBLPromises.o
    /path/Products/Debug-iphonesimulator/PromisesObjC/libPromisesObjC.a(FBLPromise+Testing.o)
duplicate symbol '_OBJC_CLASS_$_FBLPromise' in:
    /path/Products/Debug-iphonesimulator/FBLPromises.o
    /path/Products/Debug-iphonesimulator/PromisesObjC/libPromisesObjC.a(FBLPromise.o)
duplicate symbol '_OBJC_METACLASS_$_FBLPromise' in:
    /path/Products/Debug-iphonesimulator/FBLPromises.o
    /path/Products/Debug-iphonesimulator/PromisesObjC/libPromisesObjC.a(FBLPromise.o)
ld: 5 duplicate symbols for architecture x86_64

当前解决此问题的唯一方法是将 Firebase CocoaPods depenceny设置为 v6.11.0

Currently the only way to fix this is to set the Firebase CocoaPods depenceny to v6.11.0

我当前的 Podfile :

source 'git@github.com:CocoaPods/Specs.git'

workspace 'Workspace'

platform :ios, '11.0'

use_modular_headers!
inhibit_all_warnings!

install! 'cocoapods',
    :generate_multiple_pod_projects => true,
    :incremental_installation => true

target 'HandpickedFamilyApp' do
    pod 'Firebase/Core'
    pod 'Firebase/RemoteConfig'
    pod 'Firebase/Analytics'
    pod 'Firebase/Performance'
    pod 'Fabric'
    pod 'Crashlytics'
    pod 'SwiftLint'

    script_phase :name => 'Run Fabric',
                :script => '"${PODS_ROOT}/Fabric/run"',
                :input_files => ['$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)']
end

推荐答案

在将我的Google搜索词"cocoapods swiftpm重复符号"更改为"cocoapods迦太基重复符号"后,我想到了一个类似的问题,但依赖关系不同.
基本上忘记了 use_frameworks!设置.

After changing my google search term 'cocoapods swiftpm duplicate symbols' with 'cocoapods carthage duplicate symbols' I came up with a similar problem with a different dependency.
And essentially forgot all about the use_frameworks! setting.

将此内容添加到我的 Podfile 中为我修复了该问题.

Adding this to my Podfile fixed it for me.

这篇关于CocoaPods和SwiftPM中的重复符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆