我一直在重构一些代码,并创建了一个静态库,该库现在在一些应用程序使用的框架中使用。我正在使用cocoapods,但无法将新的静态库正确集成到podspec中。

我发现构建失败,因为构建中缺少静态库。如果我将静态库手动添加到最终应用程序中,则框架和应用程序可以正常工作。构建团队将生成应用程序的最终版本,因此,我仅负责仅更新框架的podspec。

我是否可以修改pod规范以将静态库设置为在最终应用程序的构建阶段显示的链接库?

更新:

当将静态库添加到我的子规范的framework.library属性中时,我得到library not found for -lMyStaticLib
订阅引用:

  s.subspec 'MyStaticLibrary' do |msl|
    mss.source_files = 'FrameworkSource/My-Static-Library/*.{h,a}'
    msl.library = 'MyStaticLib'
    msl.xcconfig = { 'HEADER_SEARCH_PATHS' => '"$(SRCROOT)/Pods/My-Framework-Name/FrameworkSource/My-Static-Library"/**', 'LIBRARY_SEARCH_PATHS' => '"$(SRCROOT)/Pods/My-Framework-Name/FrameworkSource/My-Static-Library"/**' }
    #msl.frameworks =  'MyStaticLib'
  end

更新2:
我将属性更改为msl.vendored_libraries = 'MyStaticLib',并且在podspec中也验证了路径。一切“似乎”都需要检查。我仍然遇到构建错误。
当我为设备构建时(在为模拟器构建时,对于i386,我会遇到相同的错误):
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_MyStaticLibrary", referenced from:
      objc-class-ref in MyFramework(FileInFramework.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我还再次验证了,如果我只是进入应用程序的构建阶段并遍历Pods文件夹,然后手动将MyStaticLibrary.a文件添加到它所构建的项目中,就不会出现问题。

最佳答案

您绝对可以在podspec中添加该框架。查看wiki entry on the Podspec format.

编辑:啊,您正在寻找的是0.23.0中添加的vendored_frameworksvendored_libraries。看起来这些还没有添加到Wiki中。现在将更新!

关于static-libraries - Cocoapods podspec问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19189463/

10-12 04:55