如何在podspec上支持不同的架构?

时间:2014-05-01 11:25:07

标签: ios static-libraries cocoapods

在我的公司,我们正在使用一些第三方静态库,它带有一个"包装器"我想为它创建一个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路径)
  • 使用libraries代替vendored_libraries
  • 删除其中一个静态库
  • 创建一个胖二进制文件而不是两个
  • 将所有文件压缩在一起(就像TestFlight在their podspec中所做的那样)
  • 删除VALID_ARCHS设置

我还看到了几个使用静态库的podspec示例,但没有运气..

我正在使用Cocoapods ver 0.32.1。

如果您对可能出现的问题有所了解,请在我失去理智之前告诉我。谢谢!

0 个答案:

没有答案