我想在我的应用程序的设置包中包含应用程序版本和内部修订,例如1.0.1(r1243).
Root.plist文件包含这样的片段......
<dict>
<key>Type</key>
<string>PSTitleValueSpecifier</string>
<key>Title</key>
<string>Version</string>
<key>Key</key>
<string>version_preference</string>
<key>DefaultValue</key>
<string>VersionValue</string>
<key>Values</key>
<array>
<string>VersionValue</string>
</array>
<key>Titles</key>
<array>
<string>VersionValue</string>
</array>
</dict>
Run Code Online (Sandbox Code Playgroud)
我想在构建时替换"VersionValue"字符串.
我有一个脚本可以从我的存储库中提取版本号,我需要的是一种在构建时处理(预处理)Root.plist文件的方法,并替换版本号而不影响源文件.
我想将当前的Subversion修订版号(如报告所示svnversion)插入到我的Xcode项目中.我设法插入的版本号进入Info.plist的$PROJECT_DIR,但是这不是一个好的解决方案,因为该文件版本.我试图将修订版插入到Info.plistbuild目录中,但是在代码签名阶段我遇到了一个错误(这是一个iPhone应用程序).
是否有一种简单的方法可以使用某些构建文件将修订号输入应用程序,以便更改版本不会更改版本化文件?我想也许我可以创建一个临时源文件,该文件将与其他文件链接并提供获取修订号的功能.但我不知道该怎么做.
我对其他解决方案不太感兴趣,即.这个agvtool.我想要的只是应用程序可用的修订版号,没有太大的魔力.
最后......经过几年的观看和一个月的参与,我有机会向你们问一个我自己的问题.
我的老板不相信我(或任何进程)增加内部版本号,他还希望在应用程序中加入构建日期和时间.我想把它放到通常的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文件中?
//NSString *compileDate = [NSString stringWithFormat:@"%s", __DATE__];
NSString *compileDate = [NSString stringWithUTF8String:__DATE__];
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"MMM d yyyy"];
//[df setDateFormat:@"MMM dd yyyy"];
NSDate *aDate = [df dateFromString:compileDate];
Run Code Online (Sandbox Code Playgroud)
好的,我放弃了.为什么aDate有时会返回为零?
如果我使用已注释的线条或其匹配的替换线,这是否重要?
iphone ×2
xcode ×2
compilation ×1
date ×1
info-plist ×1
nsdate ×1
shell ×1
svn ×1
xcode4 ×1
xcode4.2 ×1