Неопределенные символы с отладочными сборками в Firebase/CrashReporting

Начиная с обновления к Firebase Crash Reporting 3.8.0 через Cocoapods, я вижу следующую ошибку во время сборок для режима отладки. Я могу построить в режиме выпуска без ошибок.

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_GTMLogNoFilter", referenced from:
      objc-class-ref in FirebaseCrash(FCRSystemLogger_6532fb37dc095ffa73463b57baf5fca7.o)
  "_OBJC_CLASS_$_GTMLogBasicFormatter", referenced from:
      objc-class-ref in FirebaseCrash(FCRSystemLogger_6532fb37dc095ffa73463b57baf5fca7.o)
  "_OBJC_CLASS_$_GTMLogger", referenced from:
      objc-class-ref in FirebaseCrash(FCRSystemLogger_6532fb37dc095ffa73463b57baf5fca7.o)
      objc-class-ref in FirebaseCrash(uploader_089041b840f448492d858d7daf481e47.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 ответ

Решение

Это происходит, когда для параметра XCode " Только активная архитектура" в режиме отладки установлено значение " НЕТ "

Некоторые из Firebase SDK используют модули, созданные из исходного кода. По умолчанию CocoaPods устанавливает для Build Active Architecture Only значение YES для всех модулей, созданных из исходного кода при запуске в Debug. Это несоответствие вызывает пропущенные вами символы.

Есть два варианта решения проблемы:

  1. Переключите Build Active Architecture Only на YES при отладке вашего основного проекта.
  2. Установите " Построить активную архитектуру" ваших модулей только на NO во время отладки (взято из этого поста):

    post_install do |installer_representation|
      installer_representation.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        end
      end
    end
    
Другие вопросы по тегам