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

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

最佳答案

我在这里的解决方案是创建特定于目标的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键。

07-24 09:29