我有我的普通项目和默认的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设置的实际值?
答案 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}")