[英]Build number is not set by fastlane, but is set by Xcode
我已经设置了我的项目使用运行脚本,该脚本根据我在主分支中提交的数量自动设置内部版本号:
整个脚本,应该有助于:
#!/bin/bash
# update_build_number.sh
# Usage: `update_build_number.sh [branch]`
# Run this script after the 'Copy Bundle Resources' build phase
# Ref: http://tgoode.com/2014/06/05/sensible-way-increment-bundle-version-cfbundleversion-xcode/
branch=${1:-'master'}
buildNumber=$(expr $(git rev-list $branch --count) - $(git rev-list HEAD..$branch --count))
echo "Updating build number to $buildNumber using branch '$branch'."
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
if [ -f "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist" ]; then
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
fi
如标题中所述,我可以将其构建到设备,并且正确设置构建号。 或者,我可以通过Xcode存档并上传到AppStore,并再次正确设置版本。 基于这些观察,我假设这是正确配置的。
但是,当我使用fastlane来管理我的部署时,它不会更新内部版本号,所以我收到此错误:
错误ITMS-90189:“冗余二进制上传。您已经为版本号'#'上传了版本号为'#'的版本。确保在将应用程序上传到App Store Connect之前增加构建字符串。了解更多信息Xcode帮助( http://help.apple.com/xcode/mac/current/#/devba7f53ad4 )。“
TL;博士
“你已经给了我们那个版本,给我们发一个新版本”
对于fastlane,这是我用于部署测试版的精简版:
default_platform(:ios)
platform :ios do
lane :beta do
build_app(workspace: "MyApp.xcworkspace",
scheme: "MyApp")
upload_to_testflight
end
end
最后,如果我在Xcode中对更新的内部版本号进行硬编码,那么fastlane将正确地传送文件,因此我假设我的设置有效,没有版本问题。
我也尝试过increment_build_number
,但我找不到一个让它工作的设置(另外,Xcode现在应该为我管理这个,所以不应该关注fastlane)。
想到这个,结果很简单。
当Xcode构建应用程序时,构建输出转到:
/Users/theuser/Library/Developer/Xcode/DerivedData/MyAppName/Build/Products/Debug-iphoneos
当FASTLANE构建它,该文件被保存在每个本地目录此 。
output_directory
The directory in which the ipa file should be stored in
Default value: .
通过更改build_app
函数的output_directory
,我可以将fastlane指向Xcode使用的同一文件夹,从而允许脚本工作。
build_app(workspace: "MyApp.xcworkspace",
scheme: "MyApp",
output_directory: "/Users/theuser/Library/Developer/Xcode/DerivedData/MyApp/Build/Products/Debug-iphoneos")
但是,这里有一个不明显的问题。 DerivedData中的文件夹可以更改,这将使这成为未来构建的问题。 但是, 在此处使用此答案 ,您可以在Xcode中指定输出文件夹,然后将其与fastlane同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.