我在我的项目中使用testflightapp.com SDK来跟踪在testflightapp.com上进行的beta测试期间的崩溃。我的Xcode项目中有2个目标,分别是“ad-hoc”和“app store”。
要启动testflight SDK,我需要在AppDelegate.m中放下一行代码,如:
[TestFlight takeOff:@"67bebb8d8e5396a...A4LjQwNjQ4NA"];
现在,我希望编译器在编译目标“app store”时排除这行代码,因为在公开时触发testflight SDK是没有意义的。
我期待像#ifdef这样的东西,但我无法通过搜索论坛获得线索。
答案 0 :(得分:10)
您可以使用在每个目标的构建设置中设置的user-defined build setting,然后使用#if
或#ifdef
指令来测试该设置。例如,选择“ad-hoc”目标,单击“Build Settings”,然后向下滚动到“User-Defined”部分。然后只需单击“添加构建设置”按钮,然后选择“添加用户定义的设置”。您可以为每个构建配置(调试,发布等)设置不同的设置值。
答案 1 :(得分:0)
这是一个古老的帖子,但想分享另一种方法来实现。
解决方案就像创建几个(取决于您有多少目标)具有相同类/函数/变量但添加到不同目标的文件。
像我一样,我有主要目标和UITest目标,所以我有以下两个文件
BuildConfiguration_main.swift
已添加到主要目标。
struct BuildConfiguration {
static let isMainTarget = true
static let isUITestTarget = false
}
BuildConfiguration_UITest.swift
已添加到UITest目标。
struct BuildConfiguration {
static let isMainTarget = false
static let isUITestTarget = true
}
然后在代码中,如果您在两个目标之间共享一些代码,则可以使用BuildConfiguration.isMainTarget
或BuildConfiguration.isUITestTarget
来告诉代码目标在哪里运行。