xcode - 自动将日期/时间和内部版本号添加到 Info.plist Xcode

标签 xcode bash

我希望自动将构建日期和构建编号添加到我的 Info.plist 文件中,仅适用于我存档 iOS 应用程序的构建。

我的脚本如下

#!/bin/bash
# This was taken from variations from:
# http://davedelong.com/blog/2009/04/15/incrementing-build-numbers-xcode

if [ "$CONFIGURATION" != "Release" ]
then
exit
fi


buildPlist="$SRCROOT/$PROJECT_NAME/$PROJECT_NAME-Info.plist"


# Get the existing buildVersion and buildNumber values from the buildPlist
buildVersion=$(/usr/libexec/PlistBuddy -c "Print CFBuildVersion" "$buildPlist")

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" "$buildPlist")

buildDate=$(date "+%s")


# Increment the buildNumber
buildNumber=$(($buildNumber + 1))

# Set the version numbers in the buildPlist
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $buildNumber" "$buildPlist"
/usr/libexec/PlistBuddy -c  "Set :CFBuildDate $buildDate" "$buildPlist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildVersion.$buildNumber" "$buildPlist"
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $buildVersion.$buildNumber" "$buildPlist"
/usr/libexec/PlistBuddy -c "Set :CFBundleLongVersionString $buildVersion.$buildNumber.$buildDate" "$buildPlist"

这里的一切都运行良好,我在构建阶段选项卡中的目标依赖项之后将此脚本作为构建阶段运行。

我遇到的唯一问题是该项目似乎是使用 Info.plist 的旧值而不是新值构建的。

换句话说,如果我存档应用程序并检查生成的 ipa 中的 Info.plist 文件,它们会反射(reflect)旧值。然而,查看项目中的 Info.plist 表明脚本确实正确执行,但没有及时使用旧的 Info.plist 构建项目。

有什么解决办法吗?

这似乎可以相对轻松地解决,但令我惊讶的是,在有关此主题的文章中,没有那么多人问过这个问题。

最佳答案

事实证明,答案非常简单。所需要做的就是打开 Info.plist 预处理,然后使用 __TIMESTAMP__ 预处理器指令。

关于xcode - 自动将日期/时间和内部版本号添加到 Info.plist Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033380/

相关文章:

ios - 归档失败 : FaSTLane with Ionic 3

ios - 在部署 iOS 应用程序的临时测试版本时遇到问题

直接调用函数比通过 bash 脚本调用它花费更多的时间

linux - 从文件中匹配模式的数组中删除元素

linux - 如何在一个管道中对一个文件进行两次cat

linux - 如何在 bash/zsh 中自动发出(新邮件)通知?

c - 使用 Xcode 在 Mac 上的 C 中 fputs 崩溃

iphone - 部署到真实设备时出现问题: The identity used to sign the executable is no longer valid

MySQL 通过命令行变量设置密码

ios - 核心数据实体的初始化方法不可用