infoDictionary构建号未与Plist同步。

问题描述 投票:2回答:2

我按照这个指南在XCode iPhone项目中实现了构建号(指南).我试了一下,当NSLogging的时候,我得到了错误的构建号,它没有正确更新,总是在info.plist后面有一两个数字。它没有正确更新,总是在info.plist后面的一个或两个数字。我需要它是相同的数字。有谁知道为什么会发生这种情况?

即"[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBuildNumber"]"与plist的CFBuildNumber不一样。

脚本设置为先运行,再复制bundle资源和一切。这是我得到的输出和info.plist数字。

应用程序版本: 1.0 Build No: 52 Build Date: Wed Nov 10 15:10:05 CET 2010 (info.plist是build number: 54 and date: Wed Nov 10 15:10:43 CET 2010)

应用程序版本:1.0 Build No: 54 Build Date: Wed Nov 10 15:10:43 CET 2010 (info.plist 是 build number: 55 and date: Wed Nov 10 15:12:54 CET 2010)

应用程序版本: 1.0 Build No: 54 Build Date: Wed Nov 10 15:10:43 CET 2010 (info.plist 是 build number: 56 and date: Wed Nov 10 15:13:49 CET 2010)

应用程序版本: 1.0 Build No: 56 Build Date: Wed Nov 10 15:13:49 CET 2010 (info.plist 是 build number: 57 and date:Wed Nov 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
iphone objective-c xcode synchronization plist
2个回答
3
投票

因为项目的Info.plist在 "Run Script "阶段之前处理过。参见XCode中的 "构建结果 "窗口。为了解决这个问题,你应该1)创建新的目标,类型为 "Run script only",并配置它更新版本号2)创建新的目标,类型为 "Aggregate",并添加 "Version update "目标和 "you product "目标。

所以当你建立 "Aggregate "目标时,第一步--版本将被更新,第二步--你的产品。


0
投票

我最后用的是已经复制好的plist文件。${TARGET_BUILD_DIR}/${INFOPLIST_PATH}并将 "复制捆绑资源 "阶段放在脚本运行之前。这样一来,数量就会一直同步。

© www.soinside.com 2019 - 2024. All rights reserved.