从Xcode11开始,我们就一直从CocoaPods迁移到SwiftPM。不幸的是,有些依赖项还没有SwiftPM支持。像Firebase。
这不是一个真正的问题,因为两者可以共存在一起。
但是,由于(我认为Firebase iOS SDK v6.13.0),它们为PromisesObjC添加了一个依赖项。
这本身并不是一个问题,但我们的大多数项目(和(子)依赖项)都通过谷歌的承诺使用SwiftPm。
现在的问题是,承诺使用 SwiftPM依赖项,而Firebase CocoaPods one使用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依赖项设置为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发布于 2020-01-31 10:38:08
在我的谷歌搜索术语“cocoapods迅捷复制符号”和“cocoapods carthage重复符号”更改后,我发现了一个类似的问题,即另一个依赖项。
基本上忘记了use_frameworks!设置。
将这个添加到我的Podfile中,为我修复了它。
发布于 2022-06-11 21:49:06
在Podfile中使用use_frameworks!可以帮助您消除问题中重复的符号错误,但这一次我在控制台中得到了许多警告:
类在这两个类中都实现,其中一个将被使用。哪一个是未定义的
在尝试了许多事情之后,我通过Cocoapods安装了Firebase和Google (没有使用AdMobs软件包管理器),解决了这些问题。
https://stackoverflow.com/questions/60002257
复制相似问题