2011-01-31 83 views
9

我正在寻找一种在iOS应用程序的构建过程中动态添加有关应用程序信息的方法。在iOS应用程序(日期/时间应用程序构建)中构建信息

在测试过程中,这将是巨大的,知道什么时候我已经安装在设备上的应用程序建成并可能谁建造这将是一个很好的了解,以及。

我预想中settings.app一个部分,将给予基本建成信息进行调试。我不想在每次构建之前手动更新构建信息文件 - 应该动态生成数据。

+1

这些类似的问题可能会提供有关如何在构建时值邮票到文件中的一些想法:在Xcode中插入的Subversion版本号](http://stackoverflow.com/questions/372218/insert-subversion-revision-number- in-xcode)和[如何在应用程序的设置包中显示应用程序版本修订版?](http://stackoverflow.com/questions/877128/how-can-i-display-the-application-version-revision- in-my-applications-settings-b) – 2011-01-31 23:42:25

+0

感谢Brad,这些都是很好的资源。 – 2011-02-11 00:49:37

回答

7

你可以写在Xcode运行在您的构建过程的最后一个shell脚本生成阶段。在这个阶段,您可以使用defaults命令将数据写入任意文件。我已经使用这种技术来写入Info.plist文件,但是你可以写任何你想要的文件[1]。

下面是一个示例脚本来写入当前的git版本的Info.plist:

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
gitversion="$(cd "$SRCROOT" && git describe --always --dirty 2>/dev/null)" 
if [[ -n "$gitversion" ]]; then 
    defaults write "${infoplist%.plist}" GitVersion "$gitversion" 
fi 

你应该能够适应这种指向你想要的文件(例如,您的设置包)和写入信息你要。

[1]如果您写信给Info.plist,Xcode有一些错误可以阻止它实现Info.plist在构建过程中更改,这可能会在设备构建时破坏配置。

+0

好主意,但是...我这样做是为了保存一个关键的BuildDateTime。我可以读[[一个NSBundle mainBundle] objectForInfoDictionaryKey:@“BuildDateTime”]精细在模拟器,但是当我建立即席分布,并加载在设备上的应用程序,[[一个NSBundle mainBundle] objectForInfoDictionaryKey:@“BuildDateTime”]返回空。有任何想法吗? – mputnamtennessee 2012-05-15 18:01:30

13

您也可以使用标准的宏__DATE__这将导致串像当然与构建适当的当前日期“1980年6月25日”。