在 .plist 文件中使用 .xcconfig 值

3

我们使用一个库,需要在 Okta.plist 文件中设置配置值。

由于我们的应用有三个环境,因此我们在 .xcconfig 文件中为每个环境配置不同的配置。

这使我们可以根据构建类型(dev、test、release)设置应用图标、应用名称等内容。

我想在 Okta.plist 中也使用这些值,以便配置我们使用的 Okta 实例,但是我似乎无法使用配置文件设置这些值。

对于我们的 Info.plist,我们只需引用该值:

/// Release.xcconfig
...
APP_DISPLAY_NAME = Some Text
...
/// Info.plist
<key>CFBundleDisplayName</key>
<string>${APP_DISPLAY_NAME}</string>

它可以工作。

我如何使用Okta.plist实现相同的效果?我试过相同的方法,但是它使用键作为值,而不是从配置文件中获取的值。

1个回答

0

在构建阶段脚本中,所有构建设置(如在xcconfig文件中声明的)都可以作为环境变量使用。只有在info.plist中才支持引用这些变量,如果你想在任何plist文件中进行引用,必须编写一个自定义脚本来执行替换操作,并将其添加为构建阶段脚本。

您可以使用以下脚本Replaceplistenvironmentvariables.swift。该脚本接受输入和输出plist,并将输入plist中所有对环境变量的引用替换为它们的值,并写入输出plist。

变量引用必须采用以下形式:

<string>$(A_VARIABLE)</string> 

要将此添加到我们的项目中,请按照以下步骤进行操作:

  • 下载Replaceplistenvironmentvariables.swift并将其放置在项目的顶层(无需向Xcode项目添加引用)
  • 在构建阶段中添加一个新的“运行脚本阶段”
  • 将以下行作为脚本添加

/usr/bin/xcrun --sdk macosx swift "${PROJECT_DIR}/replacePlistEnvironmentVariables.swift" "${SCRIPT_INPUT_FILE_0}" "${SCRIPT_OUTPUT_FILE_0}"

  • 对于“输入文件”,请添加您的plist路径,例如$(SRCROOT)/MyProject/Config.plist
  • 对于“输出文件”,请添加${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Config.plist
  • 确保您的plist(例如Config.plist)未添加到目标中,因为Xcode会抱怨两个构建命令产生相同的输出。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接