如何以编程方式显示在iOS应用程序中的目标版本/内部版本号?
如何以编程方式获取target version
的值,如下图所示?
正如在我的Xcode项目的目标的属性窗口中看到的。 我想在我的应用程序的启animation面中显示这个,所以我知道人们目前正在使用哪个版本?
有2个数字!
营销发布号码是针对客户的,称为版本号 。 它从1.0开始,主要更新到2.0,3.0 ,对1.1,1.2进行小的更新,并修复到1.0.1,1.0.2 。 这个数字是关于发布和新function的。 它不必停在9,1.11.23是一个合理的版本号。
内部 版本号大部分是在此之前制作的内部版本号 。 但有些使用其他数字,如存储库的分支号码或提交号码。 这个数字应该是唯一的,以区分不同的版本,只有轻微的增量变化。
获取版本号:
Objective-C的:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
Swift <3.0:
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
Swift 3.0:
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
获取版本号:
Objective-C的:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Swift <3.0:
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
Swift 3.0:
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
如果你想在一个:
然后你必须首先使用上面的行。
Objective-C的:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
迅速:
let versionAndBuildNumber: String = "\(versionNumber) (\(buildNumber))"
笔记:
主包中的值并不总是存在的,例如在命令行应用程序中没有CFBundleShortVersionString
或CFBundleVersion
,所以这些方法将返回nil
,并且会崩溃,因为在代码中会产生不正确的downcast。 但在正常的cocoaiOS和Mac应用程序中,这些值已被定义,不会被删除。
这是用Xcode版本7.3(7D175)进行testing。 内部版本号通常写在括号/大括号中。 内部版本号是hex或十进制。
在Xcode中,您可以通过在项目设置中的Run script
构build”阶段中放置以下内容来自动递增内部版本号作为十进制数字
#!/bin/bash buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
对于hex编号,使用这个脚本
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$((0x$buildNumber)) buildNumber=$(($buildNumber + 1)) buildNumber=$(printf "%X" $buildNumber) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
对于Xcode
请执行以下操作:
步骤1
第2步
第3步
您不需要更改项目或XCode中的任何内容。 下面分别为Swift版本:
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
它包括在这个回购,检查出来:
这里同样的代码Swift 3 :
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String