我一直在重构一些代码,并创建了一个静态库,该库现在在一些应用程序使用的框架中使用。我正在使用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_frameworks
或vendored_libraries
。看起来这些还没有添加到Wiki中。现在将更新!
关于static-libraries - Cocoapods podspec问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19189463/