Я пытаюсь создать частный модуль, который зависит от сторонней статической библиотеки (не модуля). Ничто из того, что я сделал, не прошло успешно 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
для изменения настроек сборки. Я занимался этим несколько дней и ничего, что я пробовал, не сработало. Я не могу понять, почему мой модуль не может правильно связать эту статическую библиотеку. Спасибо за любую помощь.