Xcode进行iOS开发中Build与version区别?bui

作者: 随心吧 | 来源:发表于2016-11-29 18:49 被阅读1134次
    『导言』

    xcode开发中,version和build可能总是让大家迷惑。
    其实version平时大家叫做发布版本号build叫做编译版本号

    图1.xcode中version与build

    一 、发布相关:

    1.0 发布app到AppStore时候:

    version相同时候,build相同提交构建版本失败
    version相同时候,build不相同提交构建版本成功

    2.0 列表:
    名称 解释
    Version 发布 版本号
    Build 编译 版本号

    二、装逼技能:build的自增?跟随时间变化?

    图2.0 添加步骤.gif

    (1)、步骤

    Xcode ——> target——>general ———> Build Phases——> "+"——>Run scripe——>复制代码

    (2)、代码

    • 跟随时间变化(release和Debug不同情况)
    #!/bin/bash
        // 判断是哪个configuration
        // Release Debug 或者只自定义的配置
        if [ "Release" != "${CONFIGURATION}" ]
            // 如果是Release做哪些事情
            then
            // 如果不是Release做哪些事情
            // exit 0 退出 不执行下面的代码
            fi
            
            // 获取info.plist信息 CFBundleVersion 可以更改为想获取的信息的名字
            buildNumber=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
            shortVersion=$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
            buildNumber=`date +"%m%d"`
            buildNumber="$shortVersion.$buildNumber"
            
            // 设置info.plist
            /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
        
    
    
    • 跟随时间变化
        
    #!/bin/bash
        buildNumber=$(date +%Y%m%d%H%M%S)
        /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
    
    
    • 自动加1
    #!/bin/bash
        buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
        buildNumber=$(($buildNumber + 1))
        /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
    
    
    • 修改项目显示名称为版本号

    (适用于不同版本号装到一个机器里面,便于区分是哪个版本)

    #/bin/bash
        if [ "Release" != "${CONFIGURATION}" ]; then
        
        DisplayName=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
        DisplayName="ep${DisplayName}-I"
        /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $DisplayName" "$INFOPLIST_FILE"
        
        else
            
            DisplayName="真正的项目名称"
            /usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName $DisplayName" "$INFOPLIST_FILE"
            
            fi
    

    三 、 build与version的区别

    • ** 区别1:**

    首先,Version是显示对外的版本号,(itunesconectAppstore用户可以看到),对应O-C中获取version的值:[[[NSBundle mainBundle]infoDictionary]valueForKey:@"CFBundleShortVersionString"]
    该版本的版本号是三个分隔的整数组成的字符串。
    第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订。
    第二个整数表示的修订,实现较突出的特点。
    第三个整数代表维护版本例如:1.0.12或者 1.2.3等等

    • ** 区别2:**

    build别人看不到,只有开发者自己才能看到,相当于内部版本号
    【更新版本的时候,也要高于之前的build号】 对应获取方式:[[[NSBundle mainBundle]infoDictionary]valueForKey:@"CFBundleVersion"];
    标示(发布或者未发布)的内部版本号。
    这是一个单调增加的字符串,包括一个或者多个分割的整数。

    • ** 区别3:**

      附加解释InfoDictionary version CFBundleInfoDictionaryVersion Info.plist格式的版本信息,一般这个值不改动;

    图3.苦逼程序猿
    三 、总结
    • Version

    Bundle versions string, short:用于iTunes上显示的版本号,即对外的版本
    (最多是3个部分组成即 x.y.z)。

    • build

    Bundle version: 内部项目管理的版本号,不对外
    所以,可以定义任意形式一般要检查版本更新,要用到的是Version,而不是用build

    图4.快乐一刻.gif
    四、参考链接

    Xcode buid版本自动跟随时间变化
    vesion与build的区别

    相关文章

      网友评论

      本文标题:Xcode进行iOS开发中Build与version区别?bui

      本文链接:https://www.haomeiwen.com/subject/cazapttx.html