我一直在重构一些代码并创建了一个静态库,我现在在一个框架中使用它,该框架用于一些应用程序中。我正在使用 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 文件添加到它构建的项目中,则不会出现问题。