Ошибка при добавлении фреймворка 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, поэтому вам нужно найти, какие фреймворки нужно добавить в ваш проект.
Я заставил это работать, добавив следующие файлы (и без фреймворков) в мой проект:
Я также добавил строку
#import "Analytics.h"
в мой файл заголовка моста (так как я использую Swift).
Это работает для меня, потому что я не использую какие-либо интеграции на стороне клиента (хотя они используются на сервере).
Я получил эти файлы, используя cocoapods в отдельной ветке с строкой podfile
pod 'Analytics/Segmentio'
Как только я это сделал, я переключился обратно в свою основную ветку (где не использовались cocoapods) и извлек эти файлы (и ни один из файлов конфигурации CocoaPods) из папки Pods.
Может быть, вы пропустите какую-то библиотеку или фреймворк. Удалите Analytics.framework один раз и добавьте снова. Убедитесь, что ваш путь правильный как в проекте, так и в цели в настройке сборки (путь компоновщика).