С тех пор как Xcode11 мы мигрировали с CocoaPods на SwiftPM. К сожалению, некоторые зависимости еще не поддерживают SwiftPM. Как и Firebase .
Это не настоящая проблема, поскольку они оба могут сосуществовать рядом друг с другом.
Но с тех пор (я думаю, что Firebase iOS SDK v6.13.0) они добавили зависимость к PromisesObjC
.
, что само по себе не является проблемой, но большинство наших проектов (и (под) зависимостей) используют обещания от google через SwiftPm.
Теперь проблема в том, что и Обещания 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 зависимость v6.11.0
Мой текущий Подфайл :
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