CocoaPods将静态库添加为对podspec的依赖

时间:2019-10-08 23:20:01

标签: ios xcode cocoapods static-libraries

我正在尝试创建一个依赖于第三方静态库(而不是容器)的私有容器。我所做的一切都没有成功通过pod lib lint。我搜寻了数小时的stackoverflow,几乎尝试了所有方法,因此在解释目前为止的尝试时,请原谅数据转储。

我用spec.vendored_libraries = "thirdparty.a尝试了显而易见的方法,但是当运行lint时,我的规范失败并显示以下错误:

ld: library not found for -lthirdparty

在pod目标的xcconfig文件中,我可以看到我的库搜索路径已自动正确设置:

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

三重检查,这是正确的路径,但仍然没有运气。经过一番研究,我发现我看到的所有其他静态库都以“ lib”为前缀,因此我将其重命名为“ libthirdparty.a”,并更新了我的podspec: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的所有组合来修改构建设置。我已经待了好几天了,但我尝试过的任何方法都没有奏效。我不知道为什么我的吊舱无法正确链接到该静态库。感谢您的帮助。

0 个答案:

没有答案