CocoaPods добавляет статическую библиотеку как зависимость от podspec - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь создать частный модуль, который зависит от сторонней статической библиотеки (не модуля). Ничто из того, что я сделал, не прошло успешно pod lib lint. Я искал stackoverflow в течение нескольких часов, пытаясь почти все, так что простите дамп данных, поскольку я пытаюсь объяснить то, что я пробовал до сих пор.

Я пробовал очевидное с spec.vendored_libraries = "thirdparty.a, однако при запуске lintмоя спецификация завершается с ошибкой:

ld: library not found for -lthirdparty

В файле xcconfig цели моего модуля я вижу, что путь поиска моей библиотеки автоматически настроен правильно:

LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../NativoSDK-iOS/ThirdParty/Libraries"

Тройной флажок, и этоправильный путь, но все равно не повезло. После некоторого исследования я заметил, что любая другая статическая библиотека, которую я видел, имеет префикс «lib», поэтому я переименовал ее в «libthirdparty.a» и обновил свой подспец: spec.vendored_libraries = "libthirdparty.a

Это действительно помогло (Думаю). В моем OTHER_LDFLAGS я вижу -l"thirdparty", как и ожидалось. Однако теперь я получаю новую ошибку:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_ThirdPartyRenderingSettings", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartyPictureInPictureProxy", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartyAdsRequest", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartyAVPlayerVideoDisplay", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartyAdDisplayContainer", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartyAdsLoader", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
  "_OBJC_CLASS_$_ThirdPartySettings", referenced from:
      objc-class-ref in NtvVideoVastPlayerView.o
ld: symbol(s) not found for architecture x86_64

Я проверил архитектуры, содержащиеся в libthirdparty.a, используя lipo, и я вижу, что он действительно содержит x86_64.

lipo -info libthirdparty.a
Architectures in the fat file: libthirdparty.a are: armv7 armv7s i386 x86_64 arm64

Вот где я сейчас нахожусь. Я пробовал pod lib lint --use-libraries, это ничего не делает. Я пытался использовать все комбинации spec.pod_target_xcconfig для изменения настроек сборки. Я занимался этим несколько дней и ничего, что я пробовал, не сработало. Я не могу понять, почему мой модуль не может правильно связать эту статическую библиотеку. Спасибо за любую помощь.

...