【问题标题】:Duplicate symbols with CocoaPods and SwiftPM使用 CocoaPods 和 SwiftPM 复制符号
【发布时间】:2020-05-17 00:38:39
【问题描述】:

自 Xcode11 以来,我们一直在从 CocoaPods 迁移到 SwiftPM。 不幸的是,一些依赖项还没有 SwiftPM 支持。 Like Firebase.

这不是一个真正的问题,因为它们可以彼此相邻共存。
但是因为(我认为 Firebase iOS SDK v6.13.0)他们添加了对 PromisesObjC 的依赖项。
这本身不是问题,但我们的大多数项目(和(子)依赖项)通过 SwiftPm 使用 promises by google

现在的问题是 Promises SwiftPM 依赖项和 Firebase 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

【问题讨论】:

    标签: ios cocoapods swiftpm


    【解决方案1】:

    在将我的谷歌搜索词“cocoapods swiftpm duplicate symbols”更改为“cocoapods carthage duplicate symbols”后,我遇到了一个具有不同依赖关系的类似问题。
    并且基本上忘记了use_frameworks! 设置。

    将此添加到我的 Podfile 已为我修复。

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2019-01-22
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2019-08-30
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多