gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:39:11 25 4
gpt4 key购买 nike

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

最佳答案

是的,这是可以做到的。我遇到了一个框架的类似问题,该问题仅在模拟器中导致链接器错误,因此我将我的项目设置为仅在为设备构建时使用该框架。

以下假设您没有使用 cocoa pods 链接库。如果您是,我不确定需要更改哪些内容。

  1. 选择您的目标并转到“构建阶段”选项卡。
  2. 在“Link Binary With Libraries”部分下,从列表中删除静态库,但确保库文件仍然存在于 Frameworks 文件夹下的项目文件中。如果库文件名中缺少前导“lib”,您可能需要在项目导航器中重命名文件并将前导“lib”添加到文件名中。
  3. 转到“build设置”选项卡。
  4. 找到“其他链接器标志”设置。
  5. 双击“调试”值。点击 + 并输入“-l”
  6. 代替输入您的库的实际名称减去前导“lib”。不要包括扩展名。 “libMyLibrary.a”应输入为“-lMyLibrary”
  7. 选择 Debug 值并注意带圆圈的 +。点击 +。
  8. 点击新的“Any Architecture | Any SDK”部分并将其更改为“Any iOS Simulator SDK”。
  9. 现在双击“任何 iOS 模拟器 SDK”右侧的值并删除您添加的 -lsomeLibrary 条目。

现在进行调试构建。

上述更改基本上意味着该库已链接到除 iOS 模拟器构建之外的所有构建。

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

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

#if !TARGET_IPHONE_SIMULATOR
// Use stuff from the library
#endif

关于ios - 是否可以仅在使用设备而不是模拟器进行测试时使用静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com