防止Xcode重建更改配置

时间:2019-12-02 06:24:36

标签: ios swift xcode

我们的项目使用不同的构建配置来分离服务器环境 (例如:生产,分期)

#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 
}

enter image description here

有时候我们有时需要在不同的配置之间切换以重复调试,

但是,即使我们没有更改文件,Xcode也会在切换配置时重建几乎所有文件。

是否有可能优化Xcode以防止在我们更改配置时构建几乎每个文件,从而使其像增量构建一样进行构建? 以下是构建设置中我们配置的一部分

enter image description here enter image description here

环境:

  • Xcode 11
  • Swift和Objective-C混合项目
  • Cocoapods安装第三方库

1 个答案:

答案 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版本。