我们的项目使用不同的构建配置来分离服务器环境 (例如:生产,分期)
#if STAGE
public struct endpoint {
public static let api = URL(string: "https://stage.???.com/api")!
}
#else
public struct endpoint {
public static let api = URL(string: "https://prod.???.com/api")!
}
#endif
}
有时候我们有时需要在不同的配置之间切换以重复调试,
但是,即使我们没有更改文件,Xcode也会在切换配置时重建几乎所有文件。
是否有可能优化Xcode以防止在我们更改配置时构建几乎每个文件,从而使其像增量构建一样进行构建? 以下是构建设置中我们配置的一部分
环境:
答案 0 :(得分:0)
也许可以使用另一种策略来避免重建。
我有一个写的游戏是基于服务器的游戏。我有一个运行在MacOS上的服务器版本,以便于调试,并且使用Xcode构建,该游戏是一个iOS游戏。客户端和服务器都支持构建不同的环境,但是我不使用“构建配置”本身来控制它们。相反,我使用目标作为控制对环境的访问的主要方式。
我使用以下方法:
所有3个都用于服务器(因为它是命令行可执行文件),而后两个则用于游戏。
这里的窍门是我的代码允许动态切换环境(这实际上是此方法的关键元素)。
我使用构建目标来控制允许的切换范围。例如,我的Dev目标允许在Dev,QA,Stage和Prod之间切换。我的QA目标允许在QA,Stage和Prod之间切换,而我的AppStore目标仅支持Prod。
当然,支持目标的是构建配置。对于构建配置,我使用Debug,DevDebug,Release,DevRelease和AppStore。因此,“ QA目标”使用简单的Debug配置和Release配置。 DevDebug配置和DevRelease配置与“ Dev目标”一起使用。我总共使用了3个目标。
应用启动时,如果可以接受命令行并定义了env,则它将使用它(如果可以)。下一个回退是配置文件(如果您在模拟器上或运行MacOS应用,则可以轻松地对其进行编辑)。然后放进去。
这也意味着我有一个环境选择器。我发现还允许从网络错误弹出窗口中选择一个选择器也很方便(以防您使用错误的环境)。选择器仅适用于非AppStore版本。