Ошибка при добавлении фреймворка Segment iOS вручную

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

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_Amplitude", referenced from:
      objc-class-ref in Analytics(SEGAmplitudeIntegration.o)
  "_OBJC_CLASS_$_AppsFlyerTracker", referenced from:
      objc-class-ref in Analytics(SEGAppsFlyerIntegration.o)
  "_OBJC_CLASS_$_Bugsnag", referenced from:
      objc-class-ref in Analytics(SEGBugsnagIntegration.o)
  "_OBJC_CLASS_$_Countly", referenced from:
      objc-class-ref in Analytics(SEGCountlyIntegration.o)
  "_OBJC_CLASS_$_Crittercism", referenced from:
      objc-class-ref in Analytics(SEGCrittercismIntegration.o)
  "_OBJC_CLASS_$_CrittercismConfig", referenced from:
      objc-class-ref in Analytics(SEGCrittercismIntegration.o)
  "_OBJC_CLASS_$_Flurry", referenced from:
      objc-class-ref in Analytics(SEGFlurryIntegration.o)
  "_OBJC_CLASS_$_GAI", referenced from:
      objc-class-ref in Analytics(SEGGoogleAnalyticsIntegration.o)
  "_OBJC_CLASS_$_GAIDictionaryBuilder", referenced from:
      objc-class-ref in Analytics(SEGGoogleAnalyticsIntegration.o)
  "_OBJC_CLASS_$_KahunaAnalytics", referenced from:
      objc-class-ref in Analytics(SEGKahunaIntegration.o)
  "_OBJC_CLASS_$_Localytics", referenced from:
      objc-class-ref in Analytics(SEGLocalyticsIntegration.o)
  "_OBJC_CLASS_$_Mixpanel", referenced from:
      objc-class-ref in Analytics(SEGMixpanelIntegration.o)
  "_OBJC_CLASS_$_QuantcastMeasurement", referenced from:
      objc-class-ref in Analytics(SEGQuantcastIntegration.o)
  "_OBJC_CLASS_$_TRVSDictionaryWithCaseInsensitivity", referenced from:
      objc-class-ref in Analytics(SEGAnalyticsIntegration.o)
  "_OBJC_CLASS_$_TSConfig", referenced from:
      objc-class-ref in Analytics(SEGTapstreamIntegration.o)
  "_OBJC_CLASS_$_TSEvent", referenced from:
      objc-class-ref in Analytics(SEGTapstreamIntegration.o)
  "_OBJC_CLASS_$_TSTapstream", referenced from:
      objc-class-ref in Analytics(SEGTapstreamIntegration.o)
  "_kGAIScreenName", referenced from:
      -[SEGGoogleAnalyticsIntegration screen:properties:options:] in Analytics(SEGGoogleAnalyticsIntegration.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Как решить эту ошибку, я строго следую всем инструкциям, приведенным здесь. Однако просто не сможет решить это.

Пожалуйста помоги!

4 ответа

Решение

Раньше я добавлял фреймворк Segment с какао-бобами, и все работает отлично! Но все же жду ответа, который поможет добавить его вручную.

Это означает, что нужно больше фреймворков. В начале было 21 ошибка, но после добавления CoreLocation.Framework осталось всего 19, поэтому вам нужно найти, какие фреймворки нужно добавить в ваш проект.

Я заставил это работать, добавив следующие файлы (и без фреймворков) в мой проект:

Файлы, необходимые для правильной работы Segment.IO

Я также добавил строку

#import "Analytics.h"

в мой файл заголовка моста (так как я использую Swift).

Это работает для меня, потому что я не использую какие-либо интеграции на стороне клиента (хотя они используются на сервере).

Я получил эти файлы, используя cocoapods в отдельной ветке с строкой podfile

pod 'Analytics/Segmentio'

Как только я это сделал, я переключился обратно в свою основную ветку (где не использовались cocoapods) и извлек эти файлы (и ни один из файлов конфигурации CocoaPods) из папки Pods.

Может быть, вы пропустите какую-то библиотеку или фреймворк. Удалите Analytics.framework один раз и добавьте снова. Убедитесь, что ваш путь правильный как в проекте, так и в цели в настройке сборки (путь компоновщика).

Другие вопросы по тегам