为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

万千封印 2019-08-09 15:19:54
我一直在使用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窗格和其他位置显示版本,您还可以查看设置CFBundleGetInfoStringCFBundleShortVersionString


查看完整回答
反对 回复 2019-08-09
?
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是完全自动的

  • 可以随时修改漂亮的版本号


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 639 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信