如何在构建时将每个目标UIAppFonts添加到共享的Info.plist文件中

时间:2014-09-24 09:06:37

标签: ios xcode info.plist

我有一个项目,其中多个目标共享一个Info.plist文件。在构建时通过${ENVIRONMENT_VARIABLES}将简单的特定于目标的字符串插入到文件中,这很好。

但是,我想为UIAppFonts数组指定每个目标值,并且相同的策略不起作用。在构建时为此数组插入值的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我的解决方案是创建一个特定于目标的fonts-target.plist,其中只包含特定目标的一系列字体文件。然后我在运行脚本构建阶段使用PListBuddy在构建时将该plist注入Info.plist文件。它有点挑剔,因为PListBuddy非常特别关于如何在容器上使用它的选项:

/usr/libexec/PlistBuddy -c "Delete :UIAppFonts" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Add :UIAppFonts array" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Merge ${SRCROOT}/Resources/Target-Specific/fonts-${TARGET}.plist :UIAppFonts" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

三个命令因为:

  • 如果不存在,则您无法Merge
  • 如果 的事物存在,则您无法Add
  • 确保您遵守上述两项规定的唯一方法是先Delete UIAppFonts键。