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

Я пытаюсь добавить фреймворк segmentio 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)

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

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


person Hemang    schedule 11.06.2015    source источник
comment
Для тех, кто читает, похоже, что теперь вы можете использовать Carthage, который намного лучше, чемcocopods. (Он просто создает файлы для вас, и вы сами добавляете их в свой проект, как просит ОП.)   -  person Fattie    schedule 09.11.2016


Ответы (4)


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

person Hemang    schedule 18.06.2015
comment
Вы когда-нибудь получали ответ о том, как добавить его вручную? Я столкнулся с той же проблемой. - person rmooney; 17.07.2015
comment
@rmooney, еще нет, но вы можете продолжить поиск здесь. Тот же вопрос был задан разработчикам сегментов на Github. - person Hemang; 18.07.2015

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

person Artur    schedule 25.06.2015
comment
Спасибо, но как мы можем узнать это легко? - person Hemang; 26.06.2015

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

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

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

#import "Analytics.h"

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

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

Я получил эти файлы с помощью Cocoapods в отдельной ветке со строкой podfile

pod 'Analytics/Segmentio'

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

person rmooney    schedule 18.07.2015
comment
спасибо за эту информацию. Cocoapods такая неприятность. Ради всего святого, почему сегментио просто не загружает zip-файл. - person Fattie; 09.11.2016
comment
Потому что это было бы слишком просто. :) - person rmooney; 09.11.2016
comment
@mooney - без шуток, еще раз спасибо. Я обнаружил, что могу использовать Carthage, который в миллиард раз лучше и проще, чем кокоаподы. Удачи снова. - person Fattie; 09.11.2016

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

person nick    schedule 11.06.2015