在 .plist 文件中使用 .xcconfg 值

问题描述 投票:0回答:1

我们使用的库需要在

Okta.plist
文件中设置配置值。

由于我们的应用程序有 3 个环境,因此我们在

.xcconfig
文件中对每个环境进行配置。

这允许我们根据构建类型(开发、测试、发布)设置应用程序图标、应用程序名称等内容。

我也想在

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

对于我们的

Info.plist
,我们简单地引用该值:

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

而且它有效。

我怎样才能用

Okta.plist
达到同样的效果?我尝试了相同的方法,但它使用键作为值,而不是配置文件中的值。

ios xcode plist xcconfig
1个回答
1
投票

所有构建设置(如 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}"

  • 对于“输入文件”,将路径添加为“用户定义的设置”,例如
    SCRIPT_INPUT_FILE_0=$(SRCROOT)/MyProject/Config.plist
  • 对于“输出文件”添加
    SCRIPT_OUTPUT_FILE_0=${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Config.plist
  • 确保您的 plist(例如 Config.plist)未添加到您的目标中,因为 Xcode 会抱怨两个构建命令产生相同的输出。
© www.soinside.com 2019 - 2024. All rights reserved.