Version在plist文件中的key是“CFBundleShortVersionString”,标识应用程序的发布版本号,和AppStore上的版本号保持一致。该版本的版本号是三个分隔的整数组成的字符串。第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订。第二个整数表示的修订,实现较突出的特点。第三个整数代表维护版本

Build在plist文件中的key是“CFBundleVersion”,标示(发布或者未发布)的内部版本号。这是一个单调增加的字符串,包括一个或者多个分割的整数。

以上两个版本号可以通过以下方式获得:

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

// app版本
NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; // app build版本
NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];

编写脚本使Archive后自动增长build版本号

如果我们想在Archive后build号自动增长,就可以使用到Xcode的run script来实现,步骤是

  1. 选中项目的target,点击“Build Phases“
  2. 点击右下角的”Add Build Phrase“,选择”Add run script“,会产生一个新的Run Script项
  3. 拖拽新生成的Run Script项到最上面
  4. 点开该项,copy下面的shell代码进去,代码来自这里,如下图所示
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。

什么是BundleVersion

关于iOS工程的版本设置我们注意到,工程中的Info.Plist配置中有两个字段,BundleVersion和BundleShortVersionString。

Bundle version 对应Build的参数,为开发和测试使用的。通常我们用整数计,且逐一增加(可以每build一次就增加一次)。而Bundle version string,short 是给用户使用,通常是小数点间隔数表示(如:1.0.2,3.5.12),通常我们将他作为升级的标记。对于开发人员,我们更关心Bundle version的意义。在同版本(Bundle version string,short)下,Bundle version可以是不同的。不同测试包以它为标记来区分,这使得发现问题时能明确测试包的编译版本,进而明确代码版本。也就是说Bundle version能帮助我们更准确高效的定位问题。

如何使用:

搜索了一下网上的资料,发现关于设置BuildVersion的增加功能的流程,基本都用到了脚本,脚本的写法略有不同。这里举例是用到了Apple自身的方法:

好了,可以编译工程试一试。看看你设置的BuildVersion数值是不是有增加。

关于使用的建议:

如果是多人开发,会存在每个人开发的分支多次编译导致Build版本不准的情况,但不影响开发进程。对于开发我们需要注意的是每次测试测试前的Build版本。确保它增加,就,可以了!至于是否要release时增加,是否需要手动修改,这个可以根据实际情况调整。毕竟,Build版本号只是一个辅助的参数。

iOS项目中的version和build的更多相关文章

  1. ios项目中引用其他项目复习

    ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Li ...

  2. iOS项目中常见的文件

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  3. iOS-C文件添加到iOS项目中,运行报错

    iOS-C文件添加到iOS项目中,运行报错 问题: 往项目中添加一个空的c文件, 编译运行; 出现2,30个编译错误. 原因: 由于在项目中添加了Pch文件,在文件中所有代码还没有开始运行之前, pc ...

  4. XamarinSQLite教程Xamarin.iOS项目中打开数据库文件

    XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...

  5. XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件

    XamarinSQLite教程在Xamarin.iOS项目中定位数据库文件 开发者可以在指定的路径中找到复制的数据库文件,具体的操作步骤如下: (1)单击Mac电脑中Finder菜单中的“前往”|“前 ...

  6. 在Xamarin.iOS项目中使用预设数据库

    在Xamarin.iOS项目中使用预设数据库 当开发者准备好一个预设数据库文件后,就可以将这个数据库文件添加到创建的项目中了.本节将分别在Xamarin.iOS和Xamarin.Android项目中使 ...

  7. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  8. React Native(ios)项目中logo,启动屏设置

    由于logo和启动屏尺寸多,react native(ios)中没有命令可以自动生成各种的尺寸,所以可以使用以下办法:在ionic项目中生成(使用命令:ionic resources)后,再粘贴到re ...

  9. ios项目中安装和使用CocoaPods

    CocoaPods是什么? http://code4app.com/article/cocoapods-install-usage http://blog.csdn.net/jjmm2009/arti ...

随机推荐

  1. xcode4.3 完成输入后 点击背景关闭键盘

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES];} 把这个复制到 ...

  2. 【转】启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法! .

    转载地址:http://blog.csdn.net/zyz511919766/article/details/7442633 原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者j ...

  3. json返回日期格式化的解决

    function jsonDateFormat(jsonDate) {//json日期格式转换为正常格式 try { var date = new Date(parseInt(jsonDate.rep ...

  4. 关于接收json以及使用json

    Common: FileIO.cs using System; using System.Collections.Generic; //using System.Linq; using System. ...

  5. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

  6. 2016年10月29日 星期六 --出埃及记 Exodus 19:14

    2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...

  7. php 修改、增加xml结点属性的实现代码

    php修改xml结点属性,增加xml结点属性的代码,有需要的朋友可以参考下 php 修改 增加xml结点属性的代码,供大家学习参考.php修改xml结点属性,增加xml结点属性的代码,有需要的朋友,参 ...

  8. iOS中3种正则表达式的使用与比较

    正则表达式在用户注册和登录中应用很广,通过正则表达式可以判断用户输入的数据正确与否. 在iOS4.0以前开发者一般是通过谓词(NSPredicate)和加入正则表达式的第三方库(如:RegexKitL ...

  9. mysqldump命令

    mysqldump命令 mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 语法 mysqldump(选项) 选项 -- ...

  10. PHP clone

    PHP  clone     定义一个电视类 class Tv{public $width=100;public function setWidth($v){$this->width = $v; ...