猿问

增加内部版本号的更好方法?

我一直在使用shell脚本作为我的Xcode构建过程的一部分来增加plist文件中的内部版本号,但是它使得Xcode 4.2.1经常崩溃(关于不属于项目的目标的错误;我猜更改plist文件会以某种方式混淆Xcode)。

shell脚本执行此操作,以便只有agvtool当文件比plist文件更新时才会增加构建号(因此只是构建时没有增加值):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

有没有办法增加不破坏Xcode 的构建号(在plist文件中,或其他任何地方)?

增加内部版本号的更好方法?

万千封印
浏览 640回答 3
3回答

泛舟湖上清波郎朗

如果我正确理解你的问题,你想修改Project-Info.plist文件,这是Xcode标准项目模板的一部分?我问这个的原因是Project-Info.plist通常是在版本控制下,修改它意味着它将被标记为,修改。如果你没问题,那么下面的代码片段将更新内部版本号,并在过程中将文件标记为已修改,其中get_build_number有一些脚本(在本例中为占位符)以获取(可能递增的)内部版本号想用:#!/bin/sh# get_build_number is a placeholder for your script to get the latest build numberbuild_number = `get_build_number`/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${build_number}" ProjDir/Project-Info.plistPlistBuddy允许您在plist文件中设置任何键,而不仅仅是版本号。您可以创建所需的所有plist文件,并在需要时将它们包含在资源中。然后可以从捆绑中读入它们。至于您需要在about窗格和其他位置显示版本,您还可以查看设置CFBundleGetInfoString和CFBundleShortVersionString。

LEATH

我在这个问题上弄乱了很多答案,但没有一个人对我很满意。但是,我终于想出了一个我非常喜欢的混合物!有两个步骤,一个在构建阶段,另一个在构建阶段结束时。一开始:# Set the build number to the count of Git commitsbuildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"在末尾:# Set the build number to "DEVELOPMENT"/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"查看Xcode中的Info.plist,您会看到版本号是“开发”,但构建的应用程序将具有不断增加的内部版本号。(只要你总是在同一个分支上进行构建。)将版本号设置回最后的常量字符串可防止通过构建应用程序来更改Info.plist文件。为什么我喜欢这种方法:简单不会污染Git版本的历史记录CFBundleVersion是完全自动的可以随时修改漂亮的版本号
随时随地看视频慕课网APP
我要回答