我一直在使用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文件中,或其他任何地方)?增加内部版本号的更好方法?
3 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超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.plist
PlistBuddy允许您在plist文件中设置任何键,而不仅仅是版本号。您可以创建所需的所有plist文件,并在需要时将它们包含在资源中。然后可以从捆绑中读入它们。
至于您需要在about窗格和其他位置显示版本,您还可以查看设置CFBundleGetInfoString
和CFBundleShortVersionString
。
LEATH
TA贡献1936条经验 获得超6个赞
我在这个问题上弄乱了很多答案,但没有一个人对我很满意。但是,我终于想出了一个我非常喜欢的混合物!
有两个步骤,一个在构建阶段,另一个在构建阶段结束时。
一开始:
# 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是完全自动的
可以随时修改漂亮的版本号
- 3 回答
- 0 关注
- 639 浏览
添加回答
举报
0/150
提交
取消