在启用素材资源库的情况下修改Xcode 5中的Info.plist的CFBundleVersion

使用Xcode 5的新素材资源库,添加图像并组织它们从未如此简单。 但是,它似乎已经打破了我用于创build构build的一些脚本。

我在我的运行脚本阶段有一个脚本,将CFBundleVersion设置为plist中的当前时间戳。 在脚本中,我执行这个语句:

 /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $timestamp" $BUILT_PRODUCTS_DIR/$INFOPLIST_PATH 

但是,执行此操作时,将显示以下语句:

 Set: Entry, ":CFBundleVersion", Does Not Exist File Doesn't Exist, Will Create: /Users/SpacePyro/Library/DerivedData/BundleTest-duikdqngfmrovnagrcsvdcuxxstz/Build/Products/Debug-iphoneos/BundleTest.app/Info.plist 

这似乎发生在干净的版本。 这个plist似乎并没有在构build过程中产生,大概是由于资产库。

我也使用这个命令,虽然它不会抛出错误,但它仍然吹走我的变化(假设INFO_PLIST="${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Info" ):

 defaults write $INFO_PLIST CFBundleVersion $timestamp 

当我开始使用素材资源库来组织我的应用程序图标和闪屏图像时,情况并非如此。 任何人都知道为什么会这样 更好的是,是否有一个解决方法,将这个值添加到plist? 我已经尝试将脚本置于预执行构build阶段以及执行​​后构build阶段。 编译完成后,我也试过运行这个命令,但是当我尝试对它进行编码和打包时,由于plist的修改,这个签名是无效的。

如果没有合理的解决scheme存在,我想我总是可以从资产库取消迁移,直到我可以让我的脚本工作。

把这个弄出来了,这真是一个愚蠢的。 原来,你可以把脚本阶段移到最后。 我甚至不知道这些是可移动的,或者它是重要的! 但是,通过将“运行脚本”阶段拖到底部,脚本可以根据需要运行和修改。

建立阶段

我有同样的问题,在我的情况下,我有一个错误的文件path到XXX-Info.plist文件:

构build设置 – >打包 – > Info.plist文件

我改变了它的实际位置,并开始工作。

描述到哪里改变错误的设置

如果您的plist文件是Preprocessed-Info.plist ,那么将“Preprocess Info.plist文件”( INFOPLIST_PREPROCESS )的值更改为“Yes”( true )。

我曾经有类似的问题,这是最终帮助我的:

 buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}") buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${INFOPLIST_FILE}" 

(直接使用INFOPLIST_FILE不是$ BUILT_PRODUCTS_DIR / $ INFOPLIST_PATH

希望这可能是有用的。