Objective-C - TestFlight配置包含TestFlight SDK

问题描述:

我遵循TestFlight的指示来复制“release”配置。此外,我正在使用TestFlight SDK从我的应用程序获取实时报告。通过这样做,我不得不在我的应用程序中包含一些TestFlight代码。当然,我不想在我的应用程序的发布版本中使用此代码。Objective-C - TestFlight配置包含TestFlight SDK

是否有某种方法只在testflight配置中包含此代码(重复的发行版配置)?与#ifdef DEBUG用于调试配置的方式相同(或者我必须为此创建单独的目标,并且只包含该目标中的TestFlight SDK?)

您可以使用#ifdef语句很容易,因为我们认为它为我们HockeyApp服务跑这里排除代码:http://support.hockeyapp.net/kb/client-integration/crash-reporting-on-ios-quincykit

基本上它是:

  1. 添加预处理器宏Xcode项目对于所有配置:CONFIGURATION_$(CONFIGURATION)

  2. 然后,您将能够使用以下代码行仅包含特定配置的代码:

    #if defined (CONFIGURATION_Beta) 
        // YOUR CODE 
    #endif 
    
  3. 这与您的配置的名称应该包括代码只

上面的链接提供的图像,以及如何做更详细的文本替换Beta。由于您只能在您的Beta版配置中使用该库,因此除了已经创建的Beta版分发版之外,您不需要创建其他配置。

您需要有一个用于调试的配置,用于开发,一个用于测试版分配以设置adhoc权利,另一个用于应用商店分配。最后两个通常是版本配置的变体。

+0

但是TestFlight SDK会被排除在发布版之外另一种配置? –

+0

如果您不调用它,它将不会在其他配置中执行。但是,如果您没有从App Store配置中排除文件,SDKs代码仍然是二进制文件,请参阅:http://*.com/questions/2270202/xcode-exclude-files-in-a-定制配置更好的方式 – Kerni

+3

我建议接受这个答案。我遵循这里和链接中的步骤,并在[博客文章](http://justatheory.com/computers/os/ios/integrate-testflight-sdk.html)中写下了详细信息。 – theory

我认为您必须创建单独的构建配置和使用类似#ifdef TESTFLIGHT。您应该为该配置添加一个宏,以便它仅为TestFlight配置定义。

+0

注意:您可能更适合复制调试配置,因为它的构建速度更快。发布配置为多个体系结构构建(如果已配置)可执行文件。 – Jef

+0

TestFlight团队建议(http://support.testflightapp.com/kb/tutorials/how-to-create-an-ipa-xcode-4)重复发布配置的任何特定原因? –

+0

经过一番研究,我觉得我的记录是错误的。改为使用发布。抱歉。 – Jef

我的这个解决方案是在Git中的Testflight版,其中包括SDK和代码,头调用一个独立分支,等

我然后做主枝上我所有的工作,并保持Testflight分支会随时更新这些更改。这样我就不必包含我不在我的发货版本中使用的库或标题。

它比听起来简单。

+1

你如何保持你的两个分支同步?您更新主分支上的某些内容,然后将更新的代码复制到TestFlight分支? –

+0

我只是重新改变了这些变化。由于rebase跟踪删除,我通常有一个主分支,这是发展的地方,然后发布版本进入自己的分支,我已经剥离了我不想要的代码。然后,我将生产部门重新分配给主人。我有一个例子(虽然没有Testflight,但你会明白)[这里](https://github.com/Abizern/JCSSheetController) – Abizern