是否可以仅在使用设备而非模拟器进行测试时使用静态库?

dan*_*ang 6 iphone xcode static ios

我有外部封闭的库,只能用armv7s(等)编译.当我尝试编译模拟器时,显然它没有运行并显示一些错误.我不想将此库插入到我的代码中,除非我可以将Xcode配置为仅在我使用设备进行测试时才使用此库.不幸的是,我试图用cocoapods做这个没有成功,我想知道有没有办法做到这一点?

rma*_*ddy 13

是的,这可以做到.我有一个类似的问题,框架只在模拟器中导致链接器错误,所以我设置我的项目只在构建设备时使用框架.

以下假设您没有使用可可豆荚链接库.如果你是的话,我不确定需要改变什么.

  1. 选择目标并转到Build Phases选项卡.
  2. 在"链接二进制文件库"部分下,从列表中删除静态库.
  3. 转到"构建设置"选项卡.
  4. 找到"其他链接器标志"设置.
  5. 双击Debug值.点击+并输入-lsomelibrary
  6. 代替"somelibrary"输入库的实际名称减去前导"lib".不要包含扩展名.
  7. 选择Debug值并注意一点圈出+.单击+.
  8. 单击新的"Any Architecture | Any SDK"部分并将其更改为"Any iOS Simulator SDK".
  9. 现在双击"Any iOS Simulator SDK"右侧的值并删除您添加的-lsomelibrary条目.

现在做一个调试版本.

上述更改基本上意味着除了iOS模拟器构建之外,所有构建都链接了库.

您可能还需要进行一些代码更改.任何对库中的头文件或其他符号的引用的代码都应该包装如下:

#if !TARGET_IPHONE_SIMULATOR
#import "somelibrary.h"
#endif

#if !TARGET_IPHONE_SIMULATOR
    // Use stuff from the library
#endif
Run Code Online (Sandbox Code Playgroud)