Firebase Undefined символы для архитектуры x86_64
Я использую firebase как часть проекта, над которым я работаю в iOS, и я просто наткнулся на следующую ошибку привязки, когда пытаюсь скомпилировать свой код с помощью симулятора iPhone 6 или 7. для тестирования.
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_GTMSessionUploadFetcher", referenced from:
objc-class-ref in FirebaseStorage(FIRStorageUploadTask_d5061b1e2b5f1bb249816cc5fc42ff62.o)
"_OBJC_CLASS_$_GTMLogger", referenced from:
objc-class-ref in FirebaseMessaging(GIPReachability_ae5504e4a6a28a1d8997c6f38e8bff8b.o)
"_kGTMSessionUploadFetcherStandardChunkSize", referenced from:
-[FIRStorageUploadTask enqueue] in FirebaseStorage(FIRStorageUploadTask_d5061b1e2b5f1bb249816cc5fc42ff62.o)
"_GTMFetcherStandardUserAgentString", referenced from:
-[FIRAuthBackendRPCIssuerImplementation init] in FirebaseAuth(FIRAuthBackend_ea73237c278bd1b78e1c76db2a16775a.o)
"_OBJC_CLASS_$_GTMSessionFetcher", referenced from:
objc-class-ref in FirebaseStorage(FIRStorageDownloadTask_c390366e83519f6636ca985ecb70e5d0.o)
objc-class-ref in FirebaseStorage(FIRStorage_691ea9ac7cb4d224d37df2ff8a911989.o)
"_OBJC_CLASS_$_GTMSessionFetcherService", referenced from:
objc-class-ref in FirebaseAuth(FIRAuthBackend_ea73237c278bd1b78e1c76db2a16775a.o)
objc-class-ref in FirebaseStorage(FIRStorage_691ea9ac7cb4d224d37df2ff8a911989.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я использую Xcode 8.2.1, swift 3.0, и у меня также есть следующий файл Pod в моем проекте
pod 'Braintree'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Core'
pod 'Firebase/Storage'
pod 'Firebase/Messaging'
pod 'Firebase/RemoteConfig'
pod 'GeoFire', :git=>'https://github.com/firebase/geofire-objc.git'
pod 'ObjectMapper', '~> 2.2'
Я сделал обновление модуля в случае, если что-то устарело, но не повезло. Код компилируется и работает отлично, когда я использую симулятор iPhone 4 или 5.
Edit:
Я установил Build Active architecture в No, в допустимых архитектурах я перечислил arm64, armv7, armv7s, и теперь Objectmapper терпит неудачу, хотя import ObjectMapper
объявлен в файле
Use of undeclared type 'Mappable'
Любая помощь будет принята с благодарностью! Заранее благодарю вас.
Джордж.
Ответы
Ответ 1
Кажется, это сбой с производными данными. Я вышел из Xcode, я удалил все полученные данные в /Users/USER_NAME/Library/Developer/Xcode/PROJECT_NAME
Перезагруженный Xcode, скомпилированный и все работает как ожидалось, не нужно ничего менять в Active Architecture Only
или что-то еще.
Ответ 2
Для меня я просто установил инфраструктуру Firebase для Xcode, не используя CocoaPods из-за других неразрешимых проблем. После сборки есть аналогичные ошибки, как указано выше, с символами, которые не найдены для архитектуры x86_64. (возможно, потому, что я работаю с Xcode на VMWare)
Затем мне нужно вручную перейти в Общие рамки и библиотеки и добавить:
libsqlite3.tbd, libz.tbd, libС++. tbd
для работы проекта.
Ответ 3
Просто обнаружил похожую проблему и решил ее, очистив Pod-Cache.
Очистить кэш CocoaPods
pod deintegrate && pod cache очистить --all
Переустановите стручки
под установку
Ответ 4
Я попробовал решения в этом вопросе, и ничего не получилось. Также найдены другие темы в SO и GitHub. Ничего не помогло. Я использую Xcode 9.2, Swift 4, последнюю версию cocoa pods. Это сработало для меня...
Во-первых, мой podfile содержит только один firebase pod, так как я использую Analytics только на этом этапе, однако подход к решению должен быть таким же, если вы используете больше.
pod 'Firebase/Core'
Во-вторых, как указано в документации, убедитесь, что -ObjC добавлен в ваши другие флаги компоновщика. Я сделал это как на уровне проекта, так и на уровне настройки уровня. Они были разные.
В-третьих, самое главное, при настройке уровня Project, других флажках компоновщика, добавьте следующие
-framework
"FirebaseCore"
-framework
"FirebaseAnalytics"
-framework
"FirebaseInstanceID"
-framework
"FirebaseNanoPB"
-framework
"FirebaseCoreDiagnostics"
-framework
"nanopb"
Ответ 5
У меня была та же проблема, и для меня проблема заключалась в том, что я импортировал инфраструктуру FirebaseMessaging вручную, загрузив весь Firebase SDK, а затем вручную импортировав инфраструктуру обмена сообщениями в проект (я не использовал Cocoapods или Carthage). Я не импортировал другой фреймворк в ту же папку, "Protobuf.framework". После добавления Protobuf и проверки того, что целевое членство включает цель моего проекта, все заработало.
Ответ 6
Также была эта проблема...
Добавил $(inherited)
к другим флагам компоновщика в настройках сборки и теперь все работает нормально
Ответ 7
Я попробовал "очистить кеш Cocoapods" и "удалить производные данные", но это не сработало. Для меня сработал шаг, который я нашел в настройке Carthage (я все еще использую Cocoapods)
Добавьте флаг $(OTHER_LDFLAGS) -ObjC
в "Другие флаги компоновщика" в "Build". Настройки".
Вы можете увидеть шаг здесь:
https://github.com/firebase/firebase-ios-sdk/blob/master/Carthage.md
Моя информация
Установка: Cocoapods | SDK: FirebaseAnalytics (6.1.2) | IDE: Xcode 11.0 | macOS: Mojave 10.14.5 Beta | Язык: Swift 4.2 | Цель платформы: iOS 11. 0+