我尝试创建一种方法,通过Testflight分发我的应用的测试版,而不会覆盖生产版本。我希望能够在代码中知道它是beta版本还是生成版本(即以某种方式定义#if BETA_VERSION,类似于全局DEBUG变量),我想要能够通过跳板上的单独应用程序图标区分它,以及不同的应用程序名称(即MyApp Beta或类似名称)。
我通过复制我的发布配置来设置测试版配置,并且我已经拥有AdHoc版本的配置文件(我在过去六个月左右通过Testflight进行了分发)。我知道要更改应用名称,我需要在项目的plist文件中更改包显示名称属性,但我不确定如何制作单独的"个人资料"保持所有这些变化。
我已尝试通过this article阅读,但我无法让它工作,并且在执行说明时我无意中弄乱了所有配置文件。
我几周来一直在努力解决这个问题。这个过程的细节非常不透明,所以特别感谢任何详细的说明或指示。
提前谢谢!
PS我可能对Xcode中的目标,方案和配置之间的关系感到困惑并没有帮助。
答案 0 :(得分:2)
我在我的项目中使用了三种配置:Release,Beta和Debug,其中Beta是Release的副本。在以下三种配置中,我在目标的构建设置中包含以下内容:
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) CONFIGURATION_$(CONFIGURATION)
这将为每个配置定义一个单独的预处理器宏。在您的代码中,您可以执行以下操作:
#if defined(CONFIGURATION_Beta)
// Something that should only happen in Beta builds
#endif
您可以在“用户定义”类别(位于Xcode中的构建设置的底部)中为每个配置定义其他构建设置,然后在Info.plist
文件中引用它们。例如,您可以为Release,Beta和Debug版本定义不同的自定义BUNDLE_ID
构建设置,然后将CFBundleIdentifier
文件中Info.plist
的值设置为{ {1}},允许您在设备上并排安装Release,Beta和Debug版本。
<强>更新强>
如果您想看到如何设置所有这些的好例子,请查看Cheddar for iOS中的项目配置。