2017-02-17 1 views
4

Я использую firebase как часть проекта, над которым я работаю в iOS, и я просто наткнулся на следующую ошибку привязки, когда пытаюсь скомпилировать свой код с помощью симулятора iPhone 6 или 7 для тестирования ,Firebase Undefined символы для архитектуры x86_64

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, быстры 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:

Я поставил сборки Активные архитектуры на нет, в допустимых архитектур я перечислил arm64, ARMv7, armv7s и теперь ObjectMapper терпит неудачу, даже если import ObjectMapper объявлен в файле

Use of undeclared type 'Mappable' 

Любая помощь будет принята с благодарностью! Заранее спасибо.

George.

+1

В XCode марки ' Настройка сборки> Build Active Architect ures only> YES' –

+0

Привет, Sachin, спасибо за предложение, но, к сожалению, эта настройка уже находится в YES – gdev

+2

Извините, это должно быть 'NO'. –

ответ

1

Кажется, что это сбой с производными данными. Я вышел из Xcode, я удалил все полученные данные в /Users/USER_NAME/Library/Developer/Xcode/PROJECT_NAME

Перезаписанный Xcode, скомпилированный и все работает как ожидалось, ничего не нужно менять в Active Architecture Only или что-то еще.

8

Для меня я просто установил инфраструктуру Firebase для Xcode, не используя CocoaPods из-за других неразрешимых проблем. После сборки есть аналогичные ошибки, как указано выше, с символами, которые не найдены для архитектуры x86_64. (Возможно, потому, что я работаю с Xcode на VMWare)

Тогда я должен вручную перейти к General - Linked Каркасы и библиотеки и добавить:

libsqlite3.tbd, libz.tbd, LibC++ TBD.

для выполнения проекта.

+0

Мне только нужно было добавить 'libsqlite3.tbd' – Josh

+0

Спасибо, человек, ты спас жизнь! –

0

Я пробовал решения в этом вопросе, и ничего не работало. Также найдены другие темы в SO и GitHub. Ничего не помогло. Я использую Xcode 9.2, Swift 4, последнюю версию какао-контейнеров. Это сработало для меня ...

Во-первых, мой podfile содержит только один модуль firebase, так как я использую Analytics только на этом этапе, однако подход к решению должен быть таким же, если вы используете больше.
pod 'Firebase/Core'

Во-вторых, как указано в документации, убедитесь, что -ObjC добавлен в ваши другие флаги компоновщика. Я сделал это как на уровне проекта, так и на уровне настройки уровня. Они были разные.

В-третьих, и самое главное, в настройках сборки на уровне проекта, другие флаги компоновщика, добавьте следующий

-framework

"FirebaseCore"

-framework

"FirebaseAnalytics"

-framework

"FirebaseInstanceID"

-framework

"FirebaseNanoPB"

-framework

"FirebaseCoreDiagnostics"

-framework

"nanopb"