温馨提示:本文翻译自stackoverflow.com,查看原文请点击:ios - Duplicate symbols with CocoaPods and SwiftPM
cocoapods ios swiftpm

ios - CocoaPods和SwiftPM中的重复符号

发布于 2020-03-29 21:48:44

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

这不是真正的问题,因为它们可以彼此并存。
但自从(我认为Firebase iOS SDK v6.13.0)以来,他们就向添加了依赖项PromisesObjC
这本身不是问题,但是我们的大多数项目(和(子)依赖项)都使用Google通过SwiftPm提供的Promise。

现在的问题是,无论是承诺 SwiftPM依赖和火力地堡的CocoaPods一个用途FBLPromises,这将导致以下错误:

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

我当前的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

查看更多

提问者
basvk
被浏览
155
basvk 2020-01-31 18:38

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

将其添加到我的Podfile中可以为我修复它。