给iOS应用程序添加自动更新属性是本文要介绍的内容,在 iOS 项目中,有些时候为了方便跟踪发布时的版本,方便调试,或者为了展示程序的编译日期,可以通过在 Info.plist 里面添加自定义属性的方式来实现,但是这个工作是一个纯粹机械的重复劳动,每次手工去更新是比较麻烦的一个事情。
好在 Xcode 项目支持自定义脚本的编译步骤,我们可以通过在编译过程中使用自定义脚本去更新 Info.plist。
在 /usr/libexec 目录下面,有一个工具 PlistBuddy,它可以很方便地修改 plist 文件,而不需要去用 sed 之类的编辑工具来修改。
为了在使用 PlistBuddy 的时候可以直接用 Set 命令设置属性,我们先在 iOS 项目的 Info.plist 里面加一个需要自动更新的属性,例如 BUILD_DATE 和 GIT_REVISION,类型选择为字符串,值填 AUTO_GENERATED。
然后在 iOS 项目的 Target 上添加一个新的编译步骤 Run Script Build Phase:
下页就是要编写脚本了
# 获取编译的日期
- DATE=`date +%Y.%m.%d`
# 获取编译时 Git 库的短版本号
- GIT_REVISION=`git rev-parse --short HEAD`
# 设置 Info.plist 中相关的属性
- /usr/libexec/PlistBuddy "$TARGET_BUILD_DIR/$INFOPLIST_PATH" -c "Set BUILD_DATE $DATE"
- /usr/libexec/PlistBuddy "$TARGET_BUILD_DIR/$INFOPLIST_PATH" -c "Set GIT_REVISION $GIT_REVISION"
# 将 Info.plist 转换为二进制格式
- plutil -convert binary1 "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
如果需要在程序里获取这些属性,那么就可以用下面的方法:
- NSString *buildDate = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"BUILD_DATE"];
- NSString *revision = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GIT_REVISION"];
小结:给iOS应用程序添加自动更新属性的内容介绍完了,希望本文对你有所帮助。