Xcode在不同配置下的“嵌入框架”问题

7
除了标准的“Release”和“Debug”配置之外,我开发的应用还有一个“Adhoc”配置,用于进行Ad-hoc测试构建。与此同时,在工作区中构建的框架没有这个配置,因为它们的行为没有针对Ad-hoc构建进行定制。因此,当工作区为Ad-hoc构建时,产品被分成以下两部分:
- $BUILT_PRODUCTS_DIR(具有“Adhoc”前缀) - $BUILT_PRODUCTS_DIR/../Release-iphoneos或$BUILT_PRODUCTS_DIR/../Release-iphonesimulator,具体取决于我们当前正在构建哪个。
通过将$(BUILT_PRODUCTS_DIR)/../Release-$(PLATFORM_NAME)添加到这些设置中,使用库和框架搜索路径很容易使其正常工作。此时,我的应用程序可以正确地构建,但在“嵌入框架”步骤中失败。
我的框架是使用位置BUILT_PRODUCTS_DIR和仅包含名称的相对路径添加到应用程序项目中的。
这个问题与这个问题类似,但它仅适用于不需要此步骤的静态库 - 我正在使用框架。
如果有更好的方法处理这个问题,请告诉我 - 但我不想将自定义配置向上推入框架中,因为其中一些可能最终会成为开源的,我们内部流程的细节在这种情况下是无关紧要的。

为什么Ad-Hoc设置需要与发布不同?唯一可能改变的是您可能会使用不同的签名配置文件? - sschale
包括HockeyApp框架,用于设置的#if代码,仅限开发人员使用的功能等。 - user4691305
这个链接有帮助吗? - J.Wang
不,那是用于静态库的。我通过添加一个检查配置并执行 cp -R "$(BUILT_PRODUCTS_DIR)/../Release-$(PLATFORM_NAME)"/*.framework "$(BUILT_PRODUCTS_DIR)" 的脚本来模糊地解决了这个问题,它可以工作,但我不确定它是否真正“正确”。 - user4691305
我使用了相同的脚本。不确定是否正确,但它能够工作。 - Tim Sneed
1个回答

0

我在我的一个应用程序中遇到了类似的问题。在 Xcode 12.4 中,我通过将我自己的Ad Hoc配置中的系统框架搜索路径设置为$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)来解决了它。

您可以在项目中选择目标,然后选择“Build Settings”选项卡找到此设置。我建议搜索“System Framework”以找到它。添加路径后,Xcode会将其转换为系统上的实际路径,如我截图所示。

Build Settings Example


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接