我有一个构建脚本,可以将旧版本从plist中拉出来获取iOs产品,输出它,然后更新plist。这两个命令是
/usr/libexec/PlistBuddy -c Print CFBundleVersion ${LocationOfPList}
/usr/libexec/PlistBuddy -c Set :CFBundleVersion ${Version} ${LocationOfPList}
从命令行运行(使用版本和正确的PList文件位置),一切都很好。从ant运行
<exec executable="/usr/libexec/PlistBuddy"
outputproperty="CurrentVersion"
errorproperty="PListError">
<arg value="-c"/>
<arg value ="Print :CFBundleVersion"/>
<arg value="${LocationOfPList}"/>
</exec>
<echo message="Fetched the last version in the plist: ${CurrentVersion}" />
<!-- Set the plist to the current build number -->
<exec executable="/usr/libexec/PlistBuddy"
outputproperty="PListOutput"
errorproperty="PListError"
>
<arg value="-c"/>
<arg value ="Set :CFBundleVersion ${Version}" />
<arg value=" ${LocationOfPList}"/>
</exec>
<echo message="Output: ${PListOutput}"/>
<echo message="Errors: ${PListError}"/>
<echo message="Old version number: ${CurrentVersion} New Version Number: ${Version}" />
导致一些奇怪的行为。第一个命令有效,第二个命令失败。此ant脚本作为与命令行示例相同的用户运行。我看到的输出是:
[echo] Fetched the last version in the plist: 3.0.0
[exec] Result: 1
[echo] Output: File Doesn't Exist, Will Create: /Users/macbuild/iPhone/branches/anttest/iChime/Program-Info.plist
[echo] Errors:
[echo] Old version number: 3.0.0 New Version Number: anttest
plist没有更新,唯一的命中是返回码1.我是发布工程师 - 我不知道xcode。有谁看到我在这里做错了什么?
答案 0 :(得分:1)
你在set命令中的plist位置前面有一个前导空格:
<!-- v -->
<arg value=" ${LocationOfPList}"/>
这是其中一个不可见的错误 - 您可能会在错误消息中注意到“Will Create:”和“/ Users”之间有两个空格。 删除空格,它应该工作。
此外,第一个exec将PListError
属性设置为空字符串,Ant属性是不可变的,因此第二个exec没有错误文本。