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

phi*_*phi 6 static-libraries ios cocoapods

在我的公司,我们正在使用一些带有"包装"类的第三方静态库,我想为它创建一个pod.我们有两个版本的静态库,用于模拟器和设备.包含我要包含在pod中的文件的文件夹如下所示:

Engine
|
|- libEngine.a
|
|- libEngine-Simulator.a
|
|- Engine.h
|
|- EngineWrapper.h
|
|- EngineWrapper.mm
|
|- SomeOtherFile.bin
Run Code Online (Sandbox Code Playgroud)

现在,因为:

  • 该库仅支持 armv7
  • EngineWrapper.mm使用ARC
  • 需要设置CLANG_CXX_LIBRARYlibstdc++
  • 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' }
Run Code Online (Sandbox Code Playgroud)

这只是我尝试过的数百种组合/不同设置中的一种.如果你愿意,我可以提供更多的例子.但是,无论我尝试什么,我在尝试构建时都会收到以下错误:

架构armv7的未定义符号

我试图通过所有的设置,Pods.xcodeproj但我看不到可疑的东西(但同时我不熟悉Cocoapods的工作方式).

其中,我试图:

  • 保持平面文件夹层次结构(而不​​是Classes/ios/Engine路径)
  • 使用代替vendored_libraries
  • 删除其中一个静态库
  • 创建一个胖二进制文件而不是两个
  • 将所有文件压缩在一起(就像TestFlight在podspec中所做的那样)
  • 删除该VALID_ARCHS设置

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

我正在使用Cocoapods ver 0.32.1.

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