在我的公司,我们正在使用一些带有"包装"类的第三方静态库,我想为它创建一个pod.我们有两个版本的静态库,用于模拟器和设备.包含我要包含在pod中的文件的文件夹如下所示:
Engine | |- libEngine.a | |- libEngine-Simulator.a | |- Engine.h | |- EngineWrapper.h | |- EngineWrapper.mm | |- SomeOtherFile.bin
现在,因为:
该库仅支持 armv7
EngineWrapper.mm
在不使用ARC
需要设置CLANG_CXX_LIBRARY
为libstdc++
和
SomeOtherFile.bin
需要"看到" Engine.h
,
我的podspec的相关部分看起来像这样:
s.requires_arc = false s.source_files = 'Classes/ios/Engine' s.preserve_path = 'Classes/ios/Engine/SomeOtherFile.bin', 'Classes/ios/Engine/libEngine-Simulator.a', 'Classes/ios/Engine/libEngine.a' s.vendored_libraries = 'Classes/ios/Engine/libEngine-Simulator.a', 'Classes/ios/Engine/libEngine.a' s.xcconfig = { 'CLANG_CXX_LIBRARY' => 'libstdc++', 'VALID_ARCHS' => 'armv7' }
这只是我尝试过的数百种组合/不同设置中的一种.如果你愿意,我可以提供更多的例子.但是,无论我尝试什么,我在尝试构建时都会收到以下错误:
架构armv7的未定义符号
我试图通过所有的设置,Pods.xcodeproj
但我看不到可疑的东西(但同时我不熟悉Cocoapods的工作方式).
其中,我试图:
保持平面文件夹层次结构(而不是Classes/ios/Engine
路径)
使用库代替vendored_libraries
删除其中一个静态库
创建一个胖二进制文件而不是两个
将所有文件压缩在一起(就像TestFlight在podspec中所做的那样)
删除该VALID_ARCHS
设置
我还看到了几个使用静态库的不同podspec示例,但没有任何运气..
我正在使用Cocoapods ver 0.32.1.
如果您对可能出现的问题有所了解,请在我失去理智之前告诉我.谢谢!