如何在 Appcelerator Titanium 中增加 iOS 版本号
How to increase iOS build number in Appcelerator Titanium
我正在直接从 titanium studio 创建分发版本以上传到 iTunes Connect 以进行 Apple Testflight 预发布测试。我当前的应用程序版本是 1.1.1,内部版本号由 titanium studio 自动设置为 1.1.1。
在 Xcode 上,大多数开发人员通常将预发布版本号 (CFBundleVersion) 维护为整数,这非常方便,每次在上传到 iTunes 之前增加 1。来自不可能的钛工作室!
在tiapp.xml中我设置了这个
<ios>
<plist>
<dict>
<key>CFBundleShortVersionString</key>
<string>1.1.1</string>
<key>CFBundleVersion</key>
<string>10</string>
</dict>
</plist>
</ios>
在我从 Titanium Studio 运行 生成后,生成文件夹下的 info.plist 变为
<ios>
<plist>
<dict>
<key>CFBundleShortVersionString</key>
<string>1.1.1</string>
<key>CFBundleVersion</key>
<string>1.1.1</string>
</dict>
</plist>
</ios>
我知道他们已经在 appcelerator 文档中提到了这一点,CFBundleVersion
和 CFBundleShortVersionString
将从生成的 info.plist 中的 <version>
标签值变得相同。
因此,目前使用 Apple Testflight for Ti 应用程序的唯一方法是增加应用程序版本 (CFBundleShortVersionString),而不是每次上传到 iTunes Connect 时都增加 build#,这绝对不是一个好方法。从 Xcode 我可以更改构建 # 但由于某些模块和其他问题,并非所有 Ti 应用程序都会从 xcode 存档。
appcelerator 社区上有很多关于此问题的帖子,但尚无可接受的解决方案。在创建分发构建期间,是否有人直接从 Titanium Studio 获得了 change/increase build# 的有效解决方案?
提前致谢。
在我的原生 Xcode 项目中,我在构建阶段使用了两个小的 shell 脚本。这也适用于任何其他构建过程。
第一个:
if [ ${CONFIGURATION} == "Debug" ]; then
buildNumber=-1
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
else
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
flag=""
if [ ! ${CONFIGURATION} == "Release" ]; then
flag="b"
fi;
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber$flag" "${PROJECT_DIR}/${INFOPLIST_FILE}"
fi;
然后在构建过程结束时快速重置为构建编号 -1(我的默认值):
# reset the build number to the default -1 to prevent issues in git
commits
buildNumber=-1
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
这些脚本将内部版本号设置为 git 次提交(请随意在此处使用您的构建方案),构建项目并将其重置为默认内部版本号。重置可防止 info.plist 文件中的持续更改。
CFBundleShortVersionString
是手动处理的,因为自动化语义版本控制对我来说感觉不对。
grunt.registerTask('tiapp', function() {
var tiapp = require('tiapp.xml').load();
var version = tiapp.version.split('.');
tiapp.version = version[0] + '.' + version[1] + '.' + (parseInt(version[2], 10) + 1);
tiapp.write();
grunt.log.writeln(require('util').format('Bumped version to: %s', tiapp.version));
});
在此处查看有关将 Grunt 与 Titanium 结合使用的完整要点 https://gist.github.com/FokkeZB/4754f93f8b325156c33c
我在新 iTunes/Testflight 中发现的是,它只将前 3 个元素视为版本号(例如 1.0.0),向其中添加第 4 个元素会导致 iTunesConnect/testflight 处理它作为同一版本的构建版本(例如 1.0.0.1)
这让我可以在 itunesconnect 上创建 1.0.0 版本,并在同一版本下为 1.0.0.1 后续上传
刚刚更改了 tiap.xml
中的版本标签
我正在直接从 titanium studio 创建分发版本以上传到 iTunes Connect 以进行 Apple Testflight 预发布测试。我当前的应用程序版本是 1.1.1,内部版本号由 titanium studio 自动设置为 1.1.1。
在 Xcode 上,大多数开发人员通常将预发布版本号 (CFBundleVersion) 维护为整数,这非常方便,每次在上传到 iTunes 之前增加 1。来自不可能的钛工作室!
在tiapp.xml中我设置了这个
<ios>
<plist>
<dict>
<key>CFBundleShortVersionString</key>
<string>1.1.1</string>
<key>CFBundleVersion</key>
<string>10</string>
</dict>
</plist>
</ios>
在我从 Titanium Studio 运行 生成后,生成文件夹下的 info.plist 变为
<ios>
<plist>
<dict>
<key>CFBundleShortVersionString</key>
<string>1.1.1</string>
<key>CFBundleVersion</key>
<string>1.1.1</string>
</dict>
</plist>
</ios>
我知道他们已经在 appcelerator 文档中提到了这一点,CFBundleVersion
和 CFBundleShortVersionString
将从生成的 info.plist 中的 <version>
标签值变得相同。
因此,目前使用 Apple Testflight for Ti 应用程序的唯一方法是增加应用程序版本 (CFBundleShortVersionString),而不是每次上传到 iTunes Connect 时都增加 build#,这绝对不是一个好方法。从 Xcode 我可以更改构建 # 但由于某些模块和其他问题,并非所有 Ti 应用程序都会从 xcode 存档。
appcelerator 社区上有很多关于此问题的帖子,但尚无可接受的解决方案。在创建分发构建期间,是否有人直接从 Titanium Studio 获得了 change/increase build# 的有效解决方案?
提前致谢。
在我的原生 Xcode 项目中,我在构建阶段使用了两个小的 shell 脚本。这也适用于任何其他构建过程。
第一个:
if [ ${CONFIGURATION} == "Debug" ]; then
buildNumber=-1
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
else
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
flag=""
if [ ! ${CONFIGURATION} == "Release" ]; then
flag="b"
fi;
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber$flag" "${PROJECT_DIR}/${INFOPLIST_FILE}"
fi;
然后在构建过程结束时快速重置为构建编号 -1(我的默认值):
# reset the build number to the default -1 to prevent issues in git
commits
buildNumber=-1
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
这些脚本将内部版本号设置为 git 次提交(请随意在此处使用您的构建方案),构建项目并将其重置为默认内部版本号。重置可防止 info.plist 文件中的持续更改。
CFBundleShortVersionString
是手动处理的,因为自动化语义版本控制对我来说感觉不对。
grunt.registerTask('tiapp', function() {
var tiapp = require('tiapp.xml').load();
var version = tiapp.version.split('.');
tiapp.version = version[0] + '.' + version[1] + '.' + (parseInt(version[2], 10) + 1);
tiapp.write();
grunt.log.writeln(require('util').format('Bumped version to: %s', tiapp.version));
});
在此处查看有关将 Grunt 与 Titanium 结合使用的完整要点 https://gist.github.com/FokkeZB/4754f93f8b325156c33c
我在新 iTunes/Testflight 中发现的是,它只将前 3 个元素视为版本号(例如 1.0.0),向其中添加第 4 个元素会导致 iTunesConnect/testflight 处理它作为同一版本的构建版本(例如 1.0.0.1)
这让我可以在 itunesconnect 上创建 1.0.0 版本,并在同一版本下为 1.0.0.1 后续上传 刚刚更改了 tiap.xml
中的版本标签