Mic*_*ann 16 shell nsuserdefaults xcode4 info-plist xcode4.2
最后......经过几年的观看和一个月的参与,我有机会向你们问一个我自己的问题.
我的老板不相信我(或任何进程)增加内部版本号,他还希望在应用程序中加入构建日期和时间.我想把它放到通常的Info.plist文件中.
我发现了这个相关的问题:
根据那里的答案,我进入了Scheme Editor并将下面的脚本添加到Build阶段的"Post-Action"部分:
infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
builddate=`date`
if [[ -n "$builddate" ]]; then
defaults write "${infoplist%.plist}" BuildDate "${builddate}"
fi
Run Code Online (Sandbox Code Playgroud)
在XCode中,我的Scheme Editor窗口如下所示:

不幸的是,BuildDate永远不会写入Info.plist.
将"$ {builddate}"更改为"$ builddate"也不起作用.我在剧本中添加了这一行:
echo "build date is $builddate" > /tmp/result.txt
Run Code Online (Sandbox Code Playgroud)
并且在书面文件中日期显得非常好.从上面的脚本将字符串写入Info.plist文件非常好,非常烦人.
总结一下,如何将日期添加到Info.plist文件中?
啊,我应该再花30分钟(在我浪费的2个小时之上)并在发布我自己的问题之前查看了这个问题的答案:
这个动作后脚本可以解决这个问题,对我有用:
infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
builddate=`date`
if [[ -n "$builddate" ]]; then
# if BuildDateString doesn't exist, add it
/usr/libexec/PlistBuddy -c "Add :BuildDateString string $builddate" "${infoplist}"
# and if BuildDateString already existed, update it
/usr/libexec/PlistBuddy -c "Set :BuildDateString $builddate" "${infoplist}"
fi
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它在那里做了一些黑客攻击(如果它不存在则添加它;之后设置它).
如果有人可以使用上面的"默认写入"方法建议解决方案(我认为可能比"PlistBuddy"支持更好),我会很高兴找到(当然我会接受并使用那个优秀的答案,太).
Michael的答案中的代码不正确或不再更新。下面的版本修复了设置语法中的错误,还支持其中带有空格的构建路径。
infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH"
builddate=`date`
if [[ -n "$builddate" ]]; then
# if BuildDateString doesn't exist, add it
/usr/libexec/PlistBuddy -c "Add :BuildDateString string $builddate" "${infoplist}"
# and if BuildDateString already existed, update it
/usr/libexec/PlistBuddy -c "Set :BuildDateString $builddate" "${infoplist}"
fi
Run Code Online (Sandbox Code Playgroud)
注意:此更改是作为修改提交的,但是被拒绝了,我还没有足够的声誉对他的答案发表评论...
| 归档时间: |
|
| 查看次数: |
7649 次 |
| 最近记录: |