2

メイン ブランチにあるコミットの量に基づいてビルド番号を自動的に設定する実行スクリプトを使用するようにプロジェクトをセットアップしました。

ここに画像の説明を入力

スクリプト全体は、次のいずれかに役立ちます。

#!/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;dr

「あなたはすでにそのバージョンを提供しています。新しいバージョンを送ってください」

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 は気にする必要はありません)。

4

1 に答える 1