Rob*_*rtL 43 version objective-c
在Xcode中手动设置构建版本和版本号很容易,我学习了如何在构建时使用宏来增加它们.但是如何在代码中引用它们的值?
And*_*sen 92
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
NSString *appVersion = [infoDict objectForKey:@"CFBundleShortVersionString"]; // example: 1.0.0
NSString *buildNumber = [infoDict objectForKey:@"CFBundleVersion"]; // example: 42
Run Code Online (Sandbox Code Playgroud)
Jus*_*Sid 77
当然,您可以向您的主包询问info目录,其中包含info.plist的所有键和值,包括版本号:
NSDictionary *info = [[NSBundle mainBundle] infoDictionary];
NSString *version = [info objectForKey:@"CFBundleShortVersionString"];
Run Code Online (Sandbox Code Playgroud)
Rob*_*rtL 13
@robo我确实关注了如何自动增加内部版本号(不是版本号,但这非常相似),但现在我找不到了.我会试着解释一下我做了什么.我希望它足够清楚.
在Xcode 4中,查看Navigator窗格,它是Xcode屏幕左侧的窗格.它顶部有7个图标.选择最左侧的图标(看起来像文件夹)以获取Project Navigator窗格.
现在单击该窗格中的第一个项目,即项目本身.这会在中心打开一个大窗口,左侧有一个窄柱.
窄栏有两个部分:"PROJECT"和"TARGETS".在"目标"部分中单击您的项目名称.现在,中心窗格顶部有5个选项卡:"摘要","信息","构建设置","构建阶段"和"构建规则".
单击"Build Phases"选项卡.如果您的配置与我的配置相同,您现在将在主窗口中看到4个部分:"目标依赖关系","复制包资源","编译源"和"链接...".单击"添加构建阶段"(位于右下角)并选择"添加运行脚本".第5部分现在出现在中心窗格中,标题为"运行脚本".拖动"运行脚本"部分,使其成为顶部的第2部分,就在"目标依赖性"下方.
现在单击Run Script部分的显示三角形.这会打开一个窗口,您可以在其中放置脚本.将以下脚本复制并粘贴到该窗口中.
#!/bin/bash
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
bN=$((0x$bN))
bN=$(($bN + 1))
bN=$(printf "%X" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"
Run Code Online (Sandbox Code Playgroud)
确保未检查"仅在安装时运行脚本".
而已!现在,每次构建项目时,构建编号都会自动递增.
此脚本假定您在info.plist文件中有一个普通的十六进制内部版本号,并将其递增为十六进制.如果缺少构建号,我不确定它会怎么做.但是输入起始值很容易 - 只需转到上面使用的同一中心窗格中的"摘要"选项卡,然后在"构建"框中输入"1"(或任何你喜欢的值)(但不是格式化)字符串如1.0).
我认为我首先提供的十六进制脚本无法提交到App Store.这是使用十进制算术的相同脚本.
#!/bin/bash
bN=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
((bN += 1))
bN=$(printf "%d" $bN)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $bN" "$INFOPLIST_FILE"
Run Code Online (Sandbox Code Playgroud)
Con*_*ltz 12
NSBundle *bundle = [NSBundle mainBundle];
NSString *appVersion = [bundle objectForInfoDictionaryKey:(NSString *)@"CFBundleShortVersionString"];
NSString *appBuildNumber = [bundle objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23012 次 |
| 最近记录: |