我推出了Mac应用的测试版,并希望在应用名称中包含当前版本号,例如:用户在Dock等中看到的应用名称。
如果我的应用名为The App
,我希望它显示The App Beta 1234
所以在目标的构建配置中,有"产品名称"其值为$(TARGET_NAME)
现在,在调试版本中,我想在那里添加内部版本号。这应该可以使用$(TARGET_NAME) Beta $(????)
。
我放在那里而不是????
?还是不是那么简单?
e.g。这是:Getting CFBundleVersion from within Jenkins to use it as a variable, something like ${APP_VERSION}
但是,我没有使用Jenkins,而且它看起来有点不稳定。这是访问CFBundleVersion的唯一/正确方法吗??
答案 0 :(得分:1)
您可以做多件事:
CFBundleName
BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set :CFBundleName $PRODUCT_NAME Beta $BUILD_NUMBER" "$TARGET_BUILD_DIR/$INFOPLIST_PATH"
该脚本使用 PlistBuddy 。首先,它从CFBundleVersion
获取Info.plist
并将其存储在变量BUILD_NUMBER
中。在第二步中,它使用 PlistBuddy 将CFBundleName
设置为$PRODUCT_NAME Beta $BUILD_NUMBER
。请注意,它将不修改原始plist,而是修改构建目录中的plist,这样您就不会被git存储库中的更改所困扰。
应用程序运行时,CFBundleName
将显示在菜单栏中。它不会影响Dock中的应用程序名称(源自应用程序的文件名)。
注意:如果您使用CFBundleDisplayName
对Bundle Name进行了本地化,则可能无效。在这种情况下,您可能需要调整上面的脚本。
CUSTOM_BUILD_VERSION
命名并添加值PRODUCT_NAME
并将其更改为$(TARGET_NAME) Beta $(CUSTOM_BUILD_VERSION)
Info.plist
CFBundleVersion
更改为$(CUSTOM_BUILD_VERSION)
CUSTOM_BUILD_VERSION
而不是使用此方法Xcode将创建一个名为" SomeApp Beta"的应用程序。由于Dock中的名称与应用程序包名称相同,因此Dock也将使用该名称。
当然,您也可以在使用Xcode构建应用程序后重命名该应用程序。如果您使用Gradle(请参阅gradle-xcodeplugin),Fastlane或自定义构建脚本从命令行构建应用程序,这当然可以自动完成。
使用PlistBuddy从捆绑的应用程序中提取CFBundleVersion
然后重命名捆绑包以包含提取的值应该非常容易。这应该与1)中的脚本非常相似。
答案 1 :(得分:0)
使用$(TARGET_NAME)Beta $(BUILD_NUMBER)