iOS应用程序设置调试、分期和发布等环境

在开发iOS应用程序时,咱们很可能要开发应用的不同阶段(如调试、测验和发布)设置多个构建环境。

Xcode现已为咱们供给了相关的东西。在本文中,咱们将了解怎么办理这些环境的不同装备,以及怎么从代码拜访它们。

咱们开端吧。

默许的Xcode项目装备

当咱们第一次创立Xcode project,它会主动创立一个 App Target,两个 test target, 一个 scheme 和 两个关于 Debug 和 Release 的装备。

[翻译]在Xcode中管理不同的iOS构建配置

这现已很好了。为了添加更多环境,并设置它们,咱们先要了解 Xcode 中的几个概念。

什么是 Xcode targets 和 scheme

从 Xcode project 开端。一个 Xcode project 包含很多代码文件,资源和信息,用于构建项目。一个 project 可所以 iOS App 的 debug 或 release 版别。

Project 又包含了一个或许多个 target。一个 Xcode target 指定怎么构建一个项目。构建产品的说明便是 build settingsbuild phases。一个项目为所有它的 targets 定义了默许的 build setting。每个 target 能够改写这些默许的 setting。

一个 Xcode scheme 定义了在履行构建、运转、测验或装备文件等操作时会发生什么。例如咱们构建app时所运用的构建装备。

添加一个新的装备

因为 Xcode 现已为咱们创立了DebugRelease装备,我只需求再创立一个。点击 + 按钮,挑选需求仿制哪个已存在的装备。

[翻译]在Xcode中管理不同的iOS构建配置

咱们就挑选Debug装备,重命名为StagingTesting

添加schemes

下一步,为每个装备添加一个scheme,以便在Xcode中运转构建或测验操作时能够在它们之间快速切换。

[翻译]在Xcode中管理不同的iOS构建配置

然后挑选Manage schemes,能够重命名已存在的 schemes 和添加新的。

[翻译]在Xcode中管理不同的iOS构建配置

在比如中,重新为存在的命名为ExampleApp Debug,并且再创立两个,分别为ExampleApp StagingExampleApp Release

现在,咱们就能够去每个 scheme 中装备它们对应的 Build Configuration。

[翻译]在Xcode中管理不同的iOS构建配置

设置 build settings

经过装备设置,咱们现在能够在构建设置中运用它们。每个构建设置能够为每个装备具有不同的值。

例如,假如咱们每个装备需求不同的应用程序 bundle identifiers,咱们只需求更改每个装备的值。

[翻译]在Xcode中管理不同的iOS构建配置

也能够经过相同的方法设置app 的图标和称号。

自定义的 building settings

此外,咱们能够经过添加带有+按钮来为每个装备定义咱们自己的构建设置。

[翻译]在Xcode中管理不同的iOS构建配置

如上所述,咱们定义了一个名为API_URL的自定义构建设置,因此咱们能够为每种装备运用不同的API端点。

在代码中运用设置

假如想在代码中运用咱们上一步自定义的设置,需求在 Info.plist中创立相关的值。

[翻译]在Xcode中管理不同的iOS构建配置

现在就能够在代码中获取装备的值了。

    Bundle.main.object(forInfoDictionaryKey: "API_URL")

这只是一个基本的运用,经过这种方法,咱们能够添加很多需求的装备。

咱们还能够在代码中添加构建装备的表明形式,例如,仅能够为某些环境激活某些功用,或直接从代码办理这些值。 就像下边这样。

struct BuildConfiguration {
    enum Environment: String {
        case debug = "Debug"
        case staging = "Staging"
        case release = "Release"
    }
    let environment: Environment
    init() {
        environment = Environment(rawValue: Bundle.main.object(forInfoDictionaryKey: "Environment") as! String)!
    }
}

Xcode 装备文件

除了以上方法之外,咱们能够运用Xcode装备文件来完成相同的成果。 假如您想了解有关它们的更多信息,请检查文章《处理Xcode装备文件》。

翻译来源:Managing different iOS build configurations in Xcode,作者:@Natascha Fadeeva