首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CocoaPods和SwiftPM的重复符号

使用CocoaPods和SwiftPM的重复符号
EN

Stack Overflow用户
提问于 2020-01-31 10:38:08
回答 2查看 369关注 0票数 1

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

这不是一个真正的问题,因为两者可以共存在一起。

但是,由于(我认为Firebase iOS SDK v6.13.0),它们为PromisesObjC添加了一个依赖项。

这本身并不是一个问题,但我们的大多数项目(和(子)依赖项)都通过谷歌的承诺使用SwiftPm。

现在的问题是,承诺使用 SwiftPM依赖项,而Firebase CocoaPods one使用FBLPromises,这将导致以下错误:

代码语言:javascript
复制
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依赖项设置为v6.11.0

我现在的Podfile

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-31 10:38:08

在我的谷歌搜索术语“cocoapods迅捷复制符号”和“cocoapods carthage重复符号”更改后,我发现了一个类似的问题,即另一个依赖项。

基本上忘记了use_frameworks!设置。

将这个添加到我的Podfile中,为我修复了它。

票数 0
EN

Stack Overflow用户

发布于 2022-06-11 21:49:06

在Podfile中使用use_frameworks!可以帮助您消除问题中重复的符号错误,但这一次我在控制台中得到了许多警告:

类在这两个类中都实现,其中一个将被使用。哪一个是未定义的

在尝试了许多事情之后,我通过Cocoapods安装了Firebase和Google (没有使用AdMobs软件包管理器),解决了这些问题。

  1. 从包依赖项中删除Firebase
  2. 编辑您的Podfile如下: pod 'FirebaseAnalytics‘#或,不使用AdId:# pod 'Firebase/AnalyticsWithoutAdIdSupport’pod‘Google-Mobile’
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60002257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档