
在Xcode 4中,我看到了我的目标摘要:
"Version"输入对应CFBundleShortVersionString于info.plist文件,"Build"输入对应于CFBundleVersion.
这两者有什么区别?我看到互联网上有很多人想要为两者提供相同的价值,我怀疑这是为了向后兼容.
我有两个问题:
1)如果我从头开始,那么对应用程序进行版本控制的最佳做法是什么?
2)在我的应用程序的所有先前版本中,我只使用过CFBundleVersion.为了不搞乱升级过程,我应该继续以CFBundleVersion同样的方式增加,还是可以切换到"正确的方式",假设一个存在?
我想将当前的Subversion修订版号(如报告所示svnversion)插入到我的Xcode项目中.我设法插入的版本号进入Info.plist的$PROJECT_DIR,但是这不是一个好的解决方案,因为该文件版本.我试图将修订版插入到Info.plistbuild目录中,但是在代码签名阶段我遇到了一个错误(这是一个iPhone应用程序).
是否有一种简单的方法可以使用某些构建文件将修订号输入应用程序,以便更改版本不会更改版本化文件?我想也许我可以创建一个临时源文件,该文件将与其他文件链接并提供获取修订号的功能.但我不知道该怎么做.
我对其他解决方案不太感兴趣,即.这个agvtool.我想要的只是应用程序可用的修订版号,没有太大的魔力.
我只想在设置文件中输出我的ios应用程序的版本号.
我知道我必须将设置文件添加到应用程序文件夹中.
当我构建并运行时,我可以看到标准设置包附带的4个设置.
为了获得一个简单的只读字符串,我将第二个值更改为以下值

在代码(didFinishLaunchingWithOptions :)中,我调用以下内容:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
[[NSUserDefaults standardUserDefaults] setValue:version forKey:@"version_number"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,没有任何事情发生.我只看到Group元素和toogle开关和滑块但没有标题行.谁知道我错过了什么?
非常感谢你!
我正在寻找一种在iOS应用程序的构建过程中动态添加有关应用程序的信息的方法.
在测试期间,很高兴知道我在我的设备上安装的应用程序何时构建,并且可能是谁建立它也是一件好事.
我正在设想settings.app中的一个部分,它将提供用于调试目的的基本构建信息.我不希望在每次构建之前手动更新构建信息文件 - 应该动态生成数据.
可能重复:
如何在应用程序的设置包中显示应用程序版本修订版?
我有一个iPhone应用程序,将当前版本显示为设置常量(就像Skype一样).
当我发布应用程序的第一个版本时,我使用此代码来设置应用程序设置:
- (void)registerDefaultsFromSettingsBundle {
NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"];
if(!settingsBundle) {
NSLog(@"Could not find Settings.bundle");
return;
}
NSDictionary *settings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]];
NSArray *preferences = [settings objectForKey:@"PreferenceSpecifiers"];
NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]];
for(NSDictionary *prefSpecification in preferences) {
NSString *key = [prefSpecification objectForKey:@"Key"];
if(key) {
[defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key];
}
}
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister];
[defaultsToRegister release];
}
Run Code Online (Sandbox Code Playgroud)
这工作得很好,花花公子.
我现在面临的问题是,如果更新应用程序,则不会重写这些默认值(设置),因此不会更新应用程序版本.
如何强制每次安装时都设置特定的设置?
谢谢Gonso