繁体   English   中英

构建号不是由fastlane设置的,而是由Xcode设置的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM