本文介绍: 一个叫做Version一个叫做Build,(version版本号build是打正式包每次Archive时的都增加的值)这两个值都可以在Xcode选中target点击“Summary”后看到。Versionplist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致,Buildplist中的key是“CFBundleVersion”,代表build版本号,该值每次build之后都应该增加1。

参考
一个叫做Version一个叫做Build,(version版本号build是打正式包每次Archive时的都增加的值)这两个值都可以在Xcode选中target点击“Summary”后看到。 Version在plist文件中的key是“CFBundleShortVersionString”,和AppStore上的版本号保持一致,Build在plist中的key是“CFBundleVersion”,代表build版本号,该值每次build之后都应该增加1。这两个值都可以程序通过下面的代码获得:

[[[NSBundle mainBundle] infoDictionary] valueForKey:@"key"]

Archive自动增长build号 除此之外,如果我们想在Archivebuild号自动增长,就可以使用到Xcoderun script实现步骤

选中项目target,点击“Build Phases
点击右下角的”Add Build Phrase“,选择”Add run script“,会产生一个新的Run Script
拖拽生成的Run Script项到最上面
点开该项,copy下面的shell代码进去,代码来自[这里](http://stackoverflow.com/questions/9855955/xcodeincrementbuild-numberonly-during-archive?answertab=active#tabtop),如下图所示

if [ $CONFIGURATION == Release ]; then
    echo "Bumping build number..."
    plist=${PROJECT_DIR}/${INFOPLIST_FILE}

	#increment the build number (ie 115 to 116)
    buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
    if [[ "${buildnum}" == "" ]]; then
        echo "No build number in $plist"
        exit 2
    fi

    buildnum=$(expr $buildnum + 1)
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
    echo "Bumped build number to $buildnum"

else
    echo $CONFIGURATION " build - Not bumping build number."
fi

这段shell脚本的意思就是说,如果当前配置是Release(Archive时该值为Release,直接在模拟器运行是Debug),就设置build值为当前build值+1, 否则什么都不干。

这样在build的时候就会看到build号会自动加1的,想看build时输出信息可以通过”View -> Navigators -> Log”来查看最新的build时产生的log

参考
一个version一个build,都是设置版本的地方,有什么区别呢?

ios中(Android工程中也一样),有两种version,一种是 CFBundleVersion (“Bundle Version”),也就是我们看到的version,另一种是CFBundleShortVersionString (“Bundle version string, short”),也就是我们看到的Build。

普通情况下,我们只使用version即可设置为”1.0″, “1.1”, “2.0” , etc,但如果你要使用两个版本号时候,需要将build设置为1,2,3…等递增的整数,有什么用呢?

version我们可以通过App Store、itunes或其它软件看到,是给用户看的,而build是我们在团队开发内部只用的,只有我们自己可以看到。比如团队打算发布1.0版本的时候,会发布很多build版本测试或QA团队进行测试,你发布了很多build,因为一直在修改代码,因此当你收到一条bug信息时候,你怎么知道是那个build引起的问题呢,这时候build版本号的有点就可以体现出来了

当前运行版本信息可以通过info.plist文件中的bundle version中获取

NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary];

CFShow(infoDic);      

可以自己输出看一下CFShow打印出来的时什么

下面的代码是如果你想在UI上展示用户看的获取Version的代码,对比是否升级也是通过version对比,而不是build,也是用下面代码

NSString * appVersion = [[NSBundle mainBundle]objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

=============================================================

version是app发布用户看到的版本号。

build的为了方便开发者多次提交binary, 比如苹果reject后。

例如,第一次提交version和build都是1.0.

假如审核没过,那么修改代码后新的构建的version还是1.0,build改为1.0.1就ok了。

原文地址:https://blog.csdn.net/weixin_44911775/article/details/132337316

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15975.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注