[翻译]使用Xcode配置文件

625 阅读2分钟

使用 .xcconfig files 管理不同的iOS 构建环境

在上篇文章[翻译]在Xcode中管理不同的iOS构建配置中,我们使用 build settings 选项卡来设置不同的构建环境,阅读这篇文章之前,建议先去了解一下之前的内容。

这篇文章中,则使用一种替代方式,达到同样的效果,使用 Xcode 的配置文件 .xcconfig

开始吧!

创建配置文件

首先,创建一个.xcconfig文件。使用 Xcode 创建时,会默认提供一个模版名称 Configuration Setting File。 每个文件中,都是构建的配置。在这里,使用的是 Debug.xcconfigStaging.xcconfig, 和 Release.xcconfig.

111

这些文件默认都是空的。

使用构建配置内容编辑这些文件

为了使用每个.xcconfig文件的配置内容,需要打开Xcode 的 project 的 Info选项卡,并且设置相应target 的 Based on Configuration File

222

就像图上展示的,Xcode 提供了我们创建的配置文件列表。

为配置文件添加内容

下一步就是为我们创建的配置文件添加内容,例如为不同的环境,加入不同的Api Url值。

Debug.xcconfig

    API_URL = https://dev.api.com

Staging.xcconfig

    API_URL = https://staging.api.com

Release.xcconfig

    API_URL = https://api.com

看着好像不太正常,但确实不在配置文件中使用引号包围的字符串格式。

更新:在处理xcconfig文件时,由于http://中的双斜杠,一个常见的问题是无法编写URL,该斜杠被解释为注释。变通办法是使用https:/$()/dev.api.com

在代码中使用设置

如果想在代码中使用我们上一步自定义的设置,需要在 Info.plist中创建相关的值。

888

现在就可以在代码中获取配置的值了。

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

使用继承

为了避免冗余,有可能将值从项目继承到目标级别。比如说,我们希望为每个环境使用不同的捆绑标识符,这样它们就不会在构建时相互覆盖。

为此,我们创建一个配置文件,例如名为Common.xcconfig,并将其与project连接。

在 Common.xcconfig 文件中加入如下内容,

    BUNDLE_IDENTIFIER = com.tanaschita.exampleapp

然后就可以在我们的配置文件中使用继承$(inherited):

Debug.xcconfig

    #include "Common.xcconfig"
    BUNDLE_IDENTIFIER = $(inherited).debug

Staging.xcconfig

    #include "Common.xcconfig"
    BUNDLE_IDENTIFIER = $(inherited).staging

这是避免在不同文件中重复相同值的好方法。我们还可以使用$(VARIABLE_NAME)引用新值中定义的值。

总结

使用.xcconfig文件最初需要几个额外的步骤来设置,但特别是当自定义构建设置列表不断增加时,在单独的文件中管理它们可能更容易。

.xcconfig文件还允许我们独立于Xcode管理构建设置。它们可以与任何编辑器一起修改,可重用,更友好地与源代码控制一起使用。

翻译来源: Working with Xcode configuration files,作者:@Natascha Fadeeva