代码之家  ›  专栏  ›  技术社区  ›  vakio

信息字典内部版本号与plist不同步

  •  2
  • vakio  · 技术社区  · 14 年前

    我按照这个指南在Xcode iPhone项目中实现内部版本号。( guide ) 我试过了,在nslogging时得到了错误的内部版本号。它更新不正确,总是在info.plist后面有一个或两个数字。我需要相同的号码。有人知道这是为什么吗?

    即“[[[nsbundle mainbundle]infoDictionary]objectfookey:@”cfbuildNumber“]”与plist的cfbuildNumber不同。

    脚本设置为先运行,然后再复制捆绑资源和所有内容。这是我得到的输出和信息列表编号:

    应用程序版本:1.0版本号:52版本日期:周三11月10日15:10:05 CET 2010
    (info.plist的版本号为54,日期为:2010年11月10日星期三,15:10:43 CET)

    应用程序版本:1.0版本号:54版本日期:周三11月10日15:10:43 CET 2010
    (info.plist的版本号为55,日期为2010年11月10日星期三,15:12:54 CET)

    应用程序版本:1.0版本号:54版本日期:周三11月10日15:10:43 CET 2010
    (info.plist的版本号为56,日期为:2010年11月10日星期三15:13:49 CET)

    应用程序版本:1.0版本号:56版本日期:周三11月10日15:13:49 CET 2010
    (info.plist的版本号为57,日期为:11月10日星期三15:14:46 CET 2010)

    整个过程似乎都遵循这种模式。所以继续下去,它将是56(实数58),58(实数59),58(实数60),60(实数61),60(实数62),62(实数63)等。

    脚本(设置为比其他脚本先运行)是:

    #!/bin/bash
    # Auto Increment Version Script
    buildPlist="Project-Info.plist"
    CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
    CFBuildNumber=$(($CFBuildNumber + 1))
    /usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" $buildPlist
    CFBuildDate=$(date)
    /usr/libexec/PlistBuddy -c "Set :CFBuildDate $CFBuildDate" $buildPlist
    
    1 回复  |  直到 13 年前
        1
  •  3
  •   esmirnov    14 年前

    因为项目的info.plist是在“运行脚本”阶段之前处理的。请参见xcode中的“构建结果”窗口。要解决这个问题,你应该 1)创建类型为“仅运行脚本”的新目标,并将其配置为更新版本号 2)创建类型为“aggregate”的新目标,并将“version update”目标和“you product”目标添加到其中。

    因此,当您构建“聚合”目标时,第一步-版本将被更新,第二步-您的产品。