我有外部封闭的库,只能用armv7s(等)编译.当我尝试编译模拟器时,显然它没有运行并显示一些错误.
我不想将此库插入到我的代码中,除非我可以将 Xcode配置为仅在我使用设备进行测试时才使用此库.
不幸的是,我试图用cocoapods做这个没有成功,我想知道有没有办法做到这一点?
我不想将此库插入到我的代码中,除非我可以将 Xcode配置为仅在我使用设备进行测试时才使用此库.
不幸的是,我试图用cocoapods做这个没有成功,我想知道有没有办法做到这一点?
解决方法
是的,这可以做到.我有一个类似的问题,框架只在模拟器中导致链接器错误,所以我设置我的项目只在构建设备时使用框架.
以下假设您没有使用可可豆荚链接库.如果你是的话,我不确定需要改变什么.
>选择目标并转到“构建阶段”选项卡.
>在“使用库链接二进制”部分下,从列表中删除静态库.
>转到“构建设置”选项卡.
>找到“其他链接器标志”设置.
>双击Debug值.点击并输入-lsomelibrary
>代替“somelibrary”输入库的实际名称减去前导“lib”.不要包含扩展名.
>选择Debug值并注意一点圈出.点击 .
>单击新的“任何架构|任何SDK”部分并将其更改为“任何iOS模拟器SDK”.
>现在双击“Any iOS Simulator SDK”右侧的值并删除您添加的-lsomelibrary条目.
现在做一个调试版本.
上述更改基本上意味着除了iOS模拟器构建之外,所有构建都链接了库.
您可能还需要进行一些代码更改.任何对库中的头文件或其他符号的引用的代码都应该包装如下:
#if !TARGET_IPHONE_SIMULATOR #import "somelibrary.h" #endif #if !TARGET_IPHONE_SIMULATOR // Use stuff from the library #endif