Как я могу устранить ошибку Apple Mach-O Linker из Firebase? - PullRequest
0 голосов
/ 04 июля 2018

После того, как я оставил свое приложение на несколько месяцев, я обновил свою систему разработки до последних Xcode и Cocoapods и начал получать ошибку компоновщика Apple Mach-O от ряда модулей Firebase.

Некоторые заметки о том, что я пытался безуспешно:

  • удаление каталога производных файлов и перезапуск
  • удаление и переустановка модулей
  • включение и отключение биткода
  • убедитесь, что выбран «Найти неявные зависимости»
  • убедитесь, что опция -ObjC включена в 'Другие флаги компоновщика'
  • переписывание приложения в Swift 4

изменить - забыли упомянуть

  • Я всегда использую xcworkspace для запуска

edit - попытка дополнительного материала

  • после запуска pod deintegrate и pod install я заметил сообщение о том, что битовый код enable должен наследоваться настройками проекта, чтобы процесс pod мог его установить, что привело к тому, что для установки pod для битового кода было установлено значение no - сборка по-прежнему завершается сбоем одинаково, независимо от того, какой битовый код разрешения включен, но это отличается от того, что, как я понимаю, должно быть поведением по умолчанию, поэтому я подумал, что должен упомянуть об этом

Если я удаляю ссылки из своего кода в Firebase, приложение будет собираться, но как только я включу их, сборка завершится неудачей.

Полное сообщение об ошибке, которое я получаю:

Ld /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/Assembly.app/Assembly normal arm64
    cd /Users/aron/Documents/democracy.guide/Assembly
    export IPHONEOS_DEPLOYMENT_TARGET=11.4
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk -L/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos -L/Users/aron/Documents/democracy.guide/Assembly/Pods/MongoSwiftMobile/vendor/MobileSDKs/iphoneos/lib -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/FirebaseAuth -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/FirebaseCore -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/FirebaseDatabase -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/FirebaseMessaging -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/GTMSessionFetcher -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/GoogleAPIClientForREST -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/GoogleToolboxForMac -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/MongoSwiftMobile -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/Protobuf -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/StitchCore -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/StitchCoreRemoteMongoDBService -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/StitchCoreSDK -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/StitchRemoteMongoDBService -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/leveldb-library -F/Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/nanopb -F/Users/aron/Documents/democracy.guide/Assembly/Pods/FirebaseAnalytics/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/FirebaseInstanceID/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/FirebaseMLCommon/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/FirebaseMLVision/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/FirebaseMLVisionBarcodeModel/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/GoogleMobileVision/BarcodeDetector/Frameworks -F/Users/aron/Documents/democracy.guide/Assembly/Pods/GoogleMobileVision/Detector/Frameworks -filelist /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Intermediates.noindex/Assembly.build/Debug-iphoneos/Assembly.build/Objects-normal/arm64/Assembly.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=11.4 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Intermediates.noindex/Assembly.build/Debug-iphoneos/Assembly.build/Objects-normal/arm64/Assembly_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Xlinker -add_ast_path -Xlinker /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Intermediates.noindex/Assembly.build/Debug-iphoneos/Assembly.build/Objects-normal/arm64/Assembly.swiftmodule -rpath /Users/aron/Documents/democracy.guide/Assembly/Pods/MongoSwiftMobile/vendor/MobileSDKs/iphoneos/lib -framework Pods_Assembly -Xlinker -dependency_info -Xlinker /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Intermediates.noindex/Assembly.build/Debug-iphoneos/Assembly.build/Objects-normal/arm64/Assembly_dependency_info.dat -o /Users/aron/Library/Developer/Xcode/DerivedData/Assembly-haegilkknmraivhaftdfctiqowcb/Build/Products/Debug-iphoneos/Assembly.app/Assembly

Undefined symbols for architecture arm64:
  "leveldb::WriteBatch::WriteBatch()", referenced from:
      -[APLevelDBWriteBatch .cxx_construct] in FirebaseDatabase(APLevelDB.o)
  "leveldb::WriteBatch::Clear()", referenced from:
      -[APLevelDBWriteBatch clear] in FirebaseDatabase(APLevelDB.o)
  "leveldb::WriteBatch::Delete(leveldb::Slice const&)", referenced from:
      -[APLevelDBWriteBatch removeKey:] in FirebaseDatabase(APLevelDB.o)
  "leveldb::WriteBatch::Put(leveldb::Slice const&, leveldb::Slice const&)", referenced from:
      -[APLevelDBWriteBatch setData:forKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDBWriteBatch setString:forKey:] in FirebaseDatabase(APLevelDB.o)
  "operator delete[](void*)", referenced from:
      leveldb::Status::operator=(leveldb::Status const&) in FirebaseDatabase(APLevelDB.o)
      leveldb::Status::~Status() in FirebaseDatabase(APLevelDB.o)
  "leveldb::Status::CopyState(char const*)", referenced from:
      leveldb::Status::operator=(leveldb::Status const&) in FirebaseDatabase(APLevelDB.o)
  "leveldb::Options::Options()", referenced from:
      +[APLevelDB defaultCreateOptions] in FirebaseDatabase(APLevelDB.o)
  "leveldb::DB::Open(leveldb::Options const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, leveldb::DB**)", referenced from:
      -[APLevelDB initWithPath:error:] in FirebaseDatabase(APLevelDB.o)
  "___gxx_personality_v0", referenced from:
      +[APLevelDB levelDBWithPath:error:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB initWithPath:error:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB setData:forKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB setString:forKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB dataForKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB stringForKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB removeKey:] in FirebaseDatabase(APLevelDB.o)
      ...
  "leveldb::Status::ToString() const", referenced from:
      -[APLevelDB initWithPath:error:] in FirebaseDatabase(APLevelDB.o)
  "leveldb::WriteBatch::~WriteBatch()", referenced from:
      -[APLevelDBWriteBatch .cxx_destruct] in FirebaseDatabase(APLevelDB.o)
  "_OBJC_CLASS_$_FIRVisionBarcode", referenced from:
      objc-class-ref in CameraViewController.o
  "_OBJC_CLASS_$_FIRVisionBarcodeDetector", referenced from:
      objc-class-ref in CameraViewController.o
  "_utf8_nextCharSafeBody", referenced from:
      _validate_dispatch_data_partial_string in FirebaseDatabase(FSRWebSocket.o)
  "_OBJC_CLASS_$_FIRVisionImageMetadata", referenced from:
      objc-class-ref in CameraViewController.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      -[APLevelDB initWithPath:error:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB dataForKey:] in FirebaseDatabase(APLevelDB.o)
      -[APLevelDB stringForKey:] in FirebaseDatabase(APLevelDB.o)
  "_OBJC_CLASS_$_FIRInstanceID", referenced from:
      objc-class-ref in AppDelegate.o
      objc-class-ref in FirebaseMessaging(FIRMessaging.o)
  "_OBJC_CLASS_$_FIRVision", referenced from:
      objc-class-ref in CameraViewController.o
  "_OBJC_CLASS_$_FIRVisionImage", referenced from:
      objc-class-ref in CameraViewController.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
      -[APLevelDB initWithPath:error:] in FirebaseDatabase(APLevelDB.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Служба поддержки Firebase ответила на мой запрос о поддержке, заявив, что Firebase - это продукт самообслуживания, и они не могут помочь мне решить эту проблему: (

Я указываю pod'ы точно так же, как Firebase в настоящее время указывает в инструкциях по настройке мой podfile:

  • под 'Firebase / Core'
  • pod 'Firebase / Messaging'
  • pod 'Firebase / Database'
  • pod 'Firebase / Auth'
  • под 'Firebase / MLVision'
  • pod 'Firebase / MLVisionBarcodeModel'

изменить для добавления содержимого podfile.lock

Это должны быть самые последние версии

PODS:
  - Firebase/Auth (5.4.0):
    - Firebase/CoreOnly
    - FirebaseAuth (= 5.0.2)
  - Firebase/Core (5.4.0):
    - Firebase/CoreOnly
    - FirebaseAnalytics (= 5.0.1)
  - Firebase/CoreOnly (5.4.0):
    - FirebaseCore (= 5.0.5)
  - Firebase/Database (5.4.0):
    - Firebase/CoreOnly
    - FirebaseDatabase (= 5.0.2)
  - Firebase/Messaging (5.4.0):
    - Firebase/CoreOnly
    - FirebaseMessaging (= 3.0.3)
  - Firebase/MLVision (5.4.0):
    - Firebase/CoreOnly
    - FirebaseMLVision (= 0.10.0)
  - Firebase/MLVisionBarcodeModel (5.4.0):
    - Firebase/CoreOnly
    - FirebaseMLVisionBarcodeModel (= 0.10.0)
  - FirebaseAnalytics (5.0.1):
    - FirebaseCore (~> 5.0)
    - FirebaseInstanceID (~> 3.0)
    - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
    - nanopb (~> 0.3)
  - FirebaseAuth (5.0.2):
    - FirebaseCore (~> 5.0)
    - GTMSessionFetcher/Core (~> 1.1)
  - FirebaseCore (5.0.5):
    - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
  - FirebaseDatabase (5.0.2):
    - FirebaseCore (~> 5.0)
    - leveldb-library (~> 1.18)
  - FirebaseInstanceID (3.1.1):
    - FirebaseCore (~> 5.0)
  - FirebaseMessaging (3.0.3):
    - FirebaseCore (~> 5.0)
    - FirebaseInstanceID (~> 3.0)
    - GoogleToolboxForMac/Logger (~> 2.1)
    - Protobuf (~> 3.1)
  - FirebaseMLCommon (0.10.0):
    - FirebaseCore (~> 5.0)
  - FirebaseMLVision (0.10.0):
    - FirebaseCore (~> 5.0)
    - FirebaseMLCommon (~> 0.10)
    - GoogleAPIClientForREST/Core (~> 1.3)
    - GoogleAPIClientForREST/Vision (~> 1.3)
    - GoogleMobileVision/Detector (~> 1.3)
  - FirebaseMLVisionBarcodeModel (0.10.0):
    - GoogleMobileVision/BarcodeDetector (~> 1.3)
  - GoogleAPIClientForREST/Core (1.3.4):
    - GTMSessionFetcher (>= 1.1.7)
  - GoogleAPIClientForREST/Vision (1.3.4):
    - GoogleAPIClientForREST/Core
    - GTMSessionFetcher (>= 1.1.7)
  - GoogleMobileVision/BarcodeDetector (1.3.2):
    - GoogleMobileVision/Detector (~> 1.3)
  - GoogleMobileVision/Detector (1.3.2):
    - GoogleToolboxForMac/Logger (~> 2.1)
    - "GoogleToolboxForMac/NSData+zlib (~> 2.1)"
    - GTMSessionFetcher/Core (~> 1.1)
    - Protobuf (~> 3.1)
  - GoogleToolboxForMac/Defines (2.1.4)
  - GoogleToolboxForMac/Logger (2.1.4):
    - GoogleToolboxForMac/Defines (= 2.1.4)
  - "GoogleToolboxForMac/NSData+zlib (2.1.4)":
    - GoogleToolboxForMac/Defines (= 2.1.4)
  - GTMSessionFetcher (1.1.15):
    - GTMSessionFetcher/Full (= 1.1.15)
  - GTMSessionFetcher/Core (1.1.15)
  - GTMSessionFetcher/Full (1.1.15):
    - GTMSessionFetcher/Core (= 1.1.15)
  - leveldb-library (1.20)
  - MongoSwiftMobile (4.0.0)
  - nanopb (0.3.8):
    - nanopb/decode (= 0.3.8)
    - nanopb/encode (= 0.3.8)
  - nanopb/decode (0.3.8)
  - nanopb/encode (0.3.8)
  - Protobuf (3.6.0)
  - StitchCore (4.0.0):
    - StitchCoreSDK (~> 4.0.0)
  - StitchCoreRemoteMongoDBService (4.0.0):
    - StitchCoreSDK (~> 4.0.0)
  - StitchCoreSDK (4.0.0):
    - MongoSwiftMobile (~> 4.0.0)
  - StitchRemoteMongoDBService (4.0.0):
    - StitchCore (~> 4.0.0)
    - StitchCoreRemoteMongoDBService (~> 4.0.0)
  - StitchSDK (4.0.0):
    - StitchSDK/StitchSDK (= 4.0.0)
  - StitchSDK/StitchRemoteMongoDBService (4.0.0):
    - StitchRemoteMongoDBService (~> 4.0.0)
  - StitchSDK/StitchSDK (4.0.0):
    - StitchSDK/StitchRemoteMongoDBService

DEPENDENCIES:
  - Firebase/Auth
  - Firebase/Core
  - Firebase/Database
  - Firebase/Messaging
  - Firebase/MLVision
  - Firebase/MLVisionBarcodeModel
  - StitchSDK (~> 4.0.0)

SPEC REPOS:
  https://github.com/cocoapods/specs.git:
    - Firebase
    - FirebaseAnalytics
    - FirebaseAuth
    - FirebaseCore
    - FirebaseDatabase
    - FirebaseInstanceID
    - FirebaseMessaging
    - FirebaseMLCommon
    - FirebaseMLVision
    - FirebaseMLVisionBarcodeModel
    - GoogleAPIClientForREST
    - GoogleMobileVision
    - GoogleToolboxForMac
    - GTMSessionFetcher
    - leveldb-library
    - MongoSwiftMobile
    - nanopb
    - Protobuf
    - StitchCore
    - StitchCoreRemoteMongoDBService
    - StitchCoreSDK
    - StitchRemoteMongoDBService
    - StitchSDK

SPEC CHECKSUMS:
  Firebase: d66f4f29c23f22d96808d9abc174d81d8eee968f
  FirebaseAnalytics: b3628aea54c50464c32c393fb2ea032566e7ecc2
  FirebaseAuth: 096e457cdd4274412a66c4a35874787e411f5a03
  FirebaseCore: 42b3267233bd21a5abd54117ccc38ca3dd0f8e83
  FirebaseDatabase: 27be5ac5bc75e0b17537b2bbfada8258addcc8cd
  FirebaseInstanceID: f3f0657372592ecdfdfe2cac604a5a75758376a6
  FirebaseMessaging: f43eb0c0e1da096e659de6f713038e74862a62cd
  FirebaseMLCommon: 88ffed2dbb54ecb7dbcf8080a7654b6ea938e15b
  FirebaseMLVision: 144a482992b5b3d60afc17abfeb28a42bf468522
  FirebaseMLVisionBarcodeModel: dfbe6e789d6cedbe77bcf5b8b7eb1f8304e854ff
  GoogleAPIClientForREST: f7951c455df271bc6259b3ddb4073d0026475ccf
  GoogleMobileVision: 6b0a3a2dae1974ec35d80fdeeacc3a03193642e0
  GoogleToolboxForMac: 91c824d21e85b31c2aae9bb011c5027c9b4e738f
  GTMSessionFetcher: 5fa5b80fd20e439ef5f545fb2cb3ca6c6714caa2
  leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5
  MongoSwiftMobile: 6a2cf9f5e27f9be7fb0eeb3440765ba32d236c2f
  nanopb: 5601e6bca2dbf1ed831b519092ec110f66982ca3
  Protobuf: 0fc0ad8bec688b2a3017a139953e01374fedbd5f
  StitchCore: 55514801894888f2c2daaa12d7176c1d2637722b
  StitchCoreRemoteMongoDBService: 2f76803f5795bfe0008b06197bae494a034f4211
  StitchCoreSDK: 1632259c0f561dd68aeaaf656424834fd931c13c
  StitchRemoteMongoDBService: d1327e8e4fffe7b6c76da2d0117e23e03f365067
  StitchSDK: 35035630829a60935346a79cfbd139cb7d555384

PODFILE CHECKSUM: 8b327f7217b47576ad36564cb4bc3ac36d2684d4

COCOAPODS: 1.5.3

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

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

В частности, я использовал Stitch SDK из MongoDB Atlas, и когда они выпустили новую версию, если не включили битовый код.

Я обнаружил, что эта проблема была связана с неоднократным переключением включения битового кода, деинтеграцией модулей и очисткой / сборкой проекта.

Это стало очевидным только после изменения флага включения битового кода в настройках сборки Pods вместо настроек моего проекта, а затем его переключения в настройках проекта.

Всем, кто сталкивается с этой проблемой, я рекомендую попытаться удалить все модули, не относящиеся к Firebase, поскольку могут быть проблемы с совместимостью, которые вообще не видны из сообщений об ошибках, предоставляемых XCode.

0 голосов
/ 03 апреля 2019

Эта проблема связана с неопределенным дезинфицирующим средством поведения. Вы должны выключить его в схеме, чтобы изменить ситуацию? Найдите путь Xcode-> Edit Scheme-> Run-> Diagnostics. Если этот параметр неактивен, вы можете отключить его вручную в XCSCHEME.

Путь, чтобы открыть файл схемы appname.xcodeproj / xcshareddata / xcschemes / appname.xcscheme и открыть appname.xcscheme в текстовом редакторе и выполнить поиск с помощью Sanitizer

Установите для параметра enableUBSanitizer значение NO и остановите ONEveryUBSanitizerIssue на значение NO

0 голосов
/ 04 июля 2018

Это происходит постоянно по какой-то причине. Я обычно просто очищаю проект и перестраиваюсь, и я не вижу его в течение следующих нескольких недель. Не решение, но оно вернет вас к кодированию на данный момент.

...