【问题标题】:Build information in iOS Application (date/time app was built)iOS 应用程序中的构建信息(构建日期/时间应用程序)
【发布时间】:2011-06-18 19:45:41
【问题描述】:

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

在测试期间,很高兴知道我安装在我的设备上的应用程序是什么时候构建的,并且可能知道是谁构建了它。

我设想在 settings.app 中提供一个用于调试目的的基本构建信息的部分。我不想在每次构建之前手动更新构建信息文件 - 数据应该是动态生成的。

【问题讨论】:

标签: ios iphone objective-c cocoa-touch build-process


【解决方案1】:

您还可以使用标准宏 __DATE__,当然会生成像“Jun 25 1980”这样的字符串,并带有正确的当前构建日期。

【讨论】:

【解决方案2】:

您可以在 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 更改,这可能会在进行设备构建时破坏配置。

【讨论】:

  • 好主意,但是...我这样做是为了保存一个关键的 BuildDateTime。我可以在模拟器中很好地阅读 [[NSBundle mainBundle] objectForInfoDictionaryKey:@"BuildDateTime"],但是当我为 AdHoc 分发构建并在设备上加载应用程序时,[[NSBundle mainBundle] objectForInfoDictionaryKey:@"BuildDateTime"] 返回 null .有什么想法吗?
  • @mputnamtennessee:您是否尝试过打开您的临时构建并手动检查 Info.plist?
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 2018-11-23
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多