Подтвердить что ты не робот

Архивирование завершается неудачей из-за undefined Символы для Google Analytics

Я включил GAI, используя самую последнюю версию cocoapods.

Когда я создаю конфигурацию Debug, все работает отлично. Однако, как только я попытаюсь заархивировать приложение, компилятор не выполнит следующие сообщения:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_GAIDictionaryBuilder", referenced from:
      objc-class-ref in libWLCore.a(WLTrackingHelper.o)
  "_OBJC_CLASS_$_GAI", referenced from:
      objc-class-ref in libWLCore.a(WLTrackingHelper.o)
  "_kGAIScreenName", referenced from:
      +[WLTrackingHelper trackView:] in libWLCore.a(WLTrackingHelper.o)
      +[WLTrackingHelper resetView] in libWLCore.a(WLTrackingHelper.o)
  "_kGAIAnonymizeIp", referenced from:
      +[WLTrackingHelper prepareDefaultTracker:withAnonymization:withUnCaughtExceptions:withDebug:] in libWLCore.a(WLTrackingHelper.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Поскольку он работает в Debug, я попытался выяснить, где находится разница в конфигурации между Debug и Release. Я обнаружил, что флаги других компоновщиков в Release пусты, тогда как в Debug содержится флаг для GoogleAnalytics и других фреймворков и библиотек.

После добавления флагов в Release Configuration других флагов компоновщика я получил

library not found for -lGoogleAnalyticsServices

После этого я добавил libPods и после этого libPods-GoogleAnalytics в секцию Link Binary With Libraries, но ошибки остались прежними.

Я потратил почти 2 дня на эту проблему, но я не нашел никакого решения.

4b9b3361

Ответ 1

После некоторого ворча я нашел решение, добавив не библиотеку, созданную cocoa pods (libPods-GoogleAnalytics), но напрямую связав libGoogleAnalyticsServices с моим основным проектом. Тем не менее, я думаю, что это не самое элегантное решение, потому что компоновщик должен знать, что символы, которые он отсутствовал, уже были доступны, как это предусмотрено cocoapods.

Ответ 2

Пожалуйста, подтвердите, что вы добавили $(унаследованный) к другим флагам компоновщика (настройки сборки), как показано на рисунке ниже. Добавьте то же самое в Release также, в противном случае во время архивирования появится такая же ошибка. введите описание изображения здесь