在Xcode运行脚本中,如何从xcconfig编辑的plist中获取实际值

时间:2018-04-10 07:49:38

标签: ios xcode plist run-script xcconfig

我有我的普通项目和默认的plist文件,我还创建了一个xcconfig文件。

首先,我在plist中添加了一个键值,其键名为custom_mode,值与xcconfig文件中的值相关联,如下所示:

//In .plist file
<dict>
    <key>custom_mode</key>
    <string>$(xcconfig_mode)</string>
</dict>

其次,在我的xcconfig文件中,它设置如下:

//In .xcconfig file
xconfig_mode = debugMode

最后我创建了一个脚本,试图获取并打印这样的值:

//In .script file
script_mode=$(/usr/libexec/PlistBuddy -c 'Print custom_mode' "${INFOPLIST_FILE}")
echo "plist value for custom_mode: ${custom_mode}"

当我完成上述步骤并运行应用程序时,脚本正在打印,但只有它就像

"plist value for custom_mode: $(xcconfig_mode)"

它没有打印xcconfig文件设置的实际值,而是输出变量名称。那么我怎样才能获得xcconfig设置的实际值?

1 个答案:

答案 0 :(得分:0)

假设您正在构建阶段脚本中运行此脚本,则在使用此构建设置时,可以将其用作环境变量:

script_mode_var=$(/usr/libexec/PlistBuddy -c 'Print custom_mode' "${INFOPLIST_FILE}")
script_mode=${!script_mode_var}

来自man bash:

  

如果参数的第一个字符是感叹号(!),则它   引入了一个变量间接级别。 Bash使用   由其余参数构成的变量作为   变量;然后扩展此变量,并在   其余的替换,而不是参数本身的值。

另一种方法是从Xcode已经处理过的info.plist中获取值(并将变量替换为其值)。可以在路径plist =“ $ TARGET_BUILD_DIR / $ INFOPLIST_PATH”中找到。因此,您可以这样修改脚本:

plist="$TARGET_BUILD_DIR/$INFOPLIST_PATH"
script_mode=$(/usr/libexec/PlistBuddy -c 'Print custom_mode' "${plist}")