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+