【问题标题】:How to increase iOS build number in Appcelerator Titanium如何在 Appcelerator Titanium 中增加 iOS 内部版本号
【发布时间】:2015-06-15 18:19:43
【问题描述】:

我正在直接从 Titan Studio 创建分发版本,以上传到 iTunes Connect 以进行 Apple Testflight 预发布测试。我当前的应用版本是 1.1.1,内部版本号由 Titan 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 运行后,build 文件夹下生成的 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 文档中提到了这一点,CFBundleVersionCFBundleShortVersionString 将与生成的 info.plist 中的 &lt;version&gt; 标记值相同。

因此,目前使用 Apple Testflight for Ti 应用程序的唯一方法是每次在 iTunes Connect 上上传时都增加应用程序版本 (CFBundleShortVersionString) 而不是 build#,这绝对不是一个好方法。在 Xcode 中,我可以更改 Build #,但由于某些模块和其他问题,并非所有 Ti 应用程序都会从​​ xcode 存档。

appcelerator 社区上有很多关于这个问题的帖子,但还没有可接受的解决方案。有没有人在创建分发版本期间直接从 Titanium Studio 更改/增加版本的有效解决方案?

提前致谢。

【问题讨论】:

    标签: ios iphone xcode titanium appcelerator


    【解决方案1】:

    我发现新的 iTunes/Testflight 仅将第 3 个元素视为版本号(例如 1.0.0),向其中添加第 4 个元素会导致 iTunesConnect/testflight 将其视为构建版本相同的版本(例如 1.0.0.1)

    这让我可以在 itunesconnect 上创建一个 1.0.0 版本,然后在同一版本下为 1.0.0.1 上传 只是更改了 tiap.xml 中的版本标记

    【讨论】:

    • 是的,我可以确认这对我也有用.. 谢谢 :-)
    【解决方案2】:
      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 和钛的完整要点 https://gist.github.com/FokkeZB/4754f93f8b325156c33c

    更多细节在这里http://tonylukasavage.com/blog/2014/01/23/automating-appcelerator-tasks-with-grunt-titanium-and-grunt-alloy/

    【讨论】:

    • 感谢您的回答。从您的 grunt 脚本中,很明显它每次都在增加版本号。我的要求是,我希望版本号保持固定但增加内部版本号。另外我希望内部版本号是整数,而不是分数或 3 点字符串。
    【解决方案3】:

    在我的原生 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 是手动处理的,因为自动化语义版本控制对我来说感觉不对。

    【讨论】:

    猜你喜欢
    • 2016-07-23
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多