web-dev-qa-db-ja.com

ビルド番号を増やすより良い方法は?

Xcodeビルドプロセスの一部としてシェルスクリプトを使用してplistファイル内のビルド番号を増やしていますが、Xcode 4.2.1が頻繁にクラッシュします(エラーが発生します)プロジェクトに属していないターゲット;plistファイルの変更がXcodeを何らかの方法で混乱させていると推測しています。

ファイルがplistファイルよりも新しいときにビルド番号がagvtoolだけ増加するように、シェルスクリプトはこれを行いました(したがって、ビルドは値を増加しませんでした) ):

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

Xcodeを壊さないビルド番号(plistファイル、または他の場所)を増やす方法はありますか?

最終編集:私は今、 githubで公開したpythonスクリプトを使用して、この種のことをしています 。十分に文書化されていませんが、解決するのは難しくありません。おまけとして、このリポジトリには、サードパーティライブラリをアプリバンドルに自動的にバンドルする便利なスクリプトも含まれています。

132
trojanfoe

あなたの質問を正しく理解したら、Xcodeの標準プロジェクトテンプレートの一部であるProject-Info.plistファイルを変更しますか?

私がこれを尋ねる理由は、Project-Info.plistは通常バージョン管理下にあり、それを変更すると、変更済みとしてマークされるということです。

それで問題ない場合、次のスニペットはビルド番号を更新し、プロセスでファイルを変更済みとしてマークします。ここでget_build_numberはスクリプト(つまり、この例ではプレースホルダー)であり、(おそらくインクリメントされた)ビルド番号を取得します使用したい:

#!/bin/sh

# get_build_number is a placeholder for your script to get the latest build number
build_number = `get_build_number`

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${build_number}" ProjDir/Project-Info.plist

PlistBuddyでは、バージョン番号だけでなく、plistファイルに任意のキーを設定できます。必要なすべてのplistファイルを作成し、必要に応じてリソースに含めることができます。その後、バンドルから読み込むことができます。

[バージョン情報]ペインやその他の場所にバージョンを表示する必要性については、CFBundleGetInfoStringおよびCFBundleShortVersionStringの設定を調べることもできます。

29
Monolo

私はこの質問に関する多くの答えをいじりましたが、どれも私を満足させませんでした。しかし、最終的に私は本当に好きな混合物を思いつきました!

ビルドフェーズの最初と最後の2つのステップがあります。

最初に:

# Set the build number to the count of Git commits
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

最後に:

# Set the build number to "DEVELOPMENT"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"

XcodeのInfo.plistを見ると、バージョン番号が「DEVELOPMENT」であることがわかりますが、ビルドされたアプリのビルド番号は常に増加しています。 (常に同じブランチからビルドを行う限り。)

最後にバージョン番号を定数文字列に戻すと、アプリをビルドしてInfo.plistファイルを変更できなくなります。

この方法が好きな理由:

  • かんたん
  • Gitバージョン履歴を汚染しません
  • CFBundleVersionは完全に自動です
  • きれいなバージョン番号はいつでも変更できます
69
Wil Gieseler

私はこのglistを使用してきましたが、期待どおりに動作します。 https://Gist.github.com/sekati/3172554 (すべてのクレジットは元の著者に送られます)

時間の経過とともに修正したSctipts。

xcode-versionString-generator.sh

xcode-build-number-generator.sh

これらの要点は開発者コミュニティを支援しているためです。私はそれを使ってgithubプロジェクトを作成しようと考えました。それで良い開発をしましょう。 githubプロジェクトは次のとおりです。 https://github.com/alokc83/Xcode-build-and-version-generator

両方のスクリプトのコードを少し強化しました。以下を使用する代わりに、githubから最新のものを取得します

バージョンの場合:

# xcode-version-bump.sh
# @desc Auto-increment the version number (only) when a project is archived for export. 
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Check the checkbox "Run script only when installing"
# 6. Drag the "Run Script" below "Link Binaries With Libraries"
# 7. Insure your starting version number is in SemVer format (e.g. 1.0.0)

# This splits a two-decimal version string, such as "0.45.123", allowing us to increment the third position.
VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
NEWSUBVERSION=`echo $VERSIONNUM | awk -F "." '{print $3}'`
NEWSUBVERSION=$(($NEWSUBVERSION + 1))
NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." '{print $1 "." $2 ".'$NEWSUBVERSION'" }'`
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}"

ビルドの場合:

# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run. 
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
38
Alix

このエントリ全体が非常に役に立ちました。このトリックを使用しましたが、GITでスクリプトをポストコミットフックとして設定したため、コミットが成功するたびにCFBundleVersionがインクリメントされます。フックスクリプトは.git/hooksに入ります。ログはプロジェクトディレクトリに残ります。

これは私の最も基本的な基準を満たしています。 GITからバージョンを取得し、以前の正確なビルドを再構築できるようにしたいと思います。ビルドプロセス中に行われたインクリメントは、これを行いません。

私のスクリプトは次のとおりです。

#!/bin/sh
#
# post-commit
#
# This script increments the CFBundleVersion for each successful commit
#

plist="./XYZZY/XYZZY-Info.plist"
buildnum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "$plist")
if [ -z "$buildnum" ]; then
    exit 1
fi
buildnumplus=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnumplus" "$plist"

echo $(date) "- Incremented CFBundleVersion to" $buildnumplus >> hookLog.txt
14
LostInTheTrees

どの方法が最善かはわかりませんが、だれかがそれを探している場合に備えて、Appleの答えを投稿します...

これによると AppleのQ&A投稿

agvtoolを使用したバージョン番号とビルド番号の自動化

バージョンキーとビルド番号キーは、それぞれアプリケーションのマーケティングバージョンと内部バージョンを指定します。 agvtoolは、これらの番号を次に大きい番号または特定の番号に自動的に増分できるコマンドラインツールです。

ビルド番号は、アプリケーションの未リリースまたはリリース済みバージョンを識別します。アプリケーションのInfo.plistにCFBundleVersion(バンドルバージョン)として保存されます。

Xcodeプロジェクトで次の手順を完了する必要があります。

  1. agvtoolを有効にする

ターゲットのビルド設定ペインに移動し、次のようにすべてのビルド構成用にそれを更新します。

  • [現在のプロジェクトバージョン]を選択した値に設定します。

Xcodeプロジェクトデータファイルproject.pbxprojには、プロジェクトの現在のバージョンを指定するCURRENT_PROJECT_VERSION(現在のプロジェクトバージョン)ビルド設定が含まれています。 agvtoolは、project.pbxprojでCURRENT_PROJECT_VERSIONを検索します。 CURRENT_PROJECT_VERSIONが存在する場合は実行を継続し、そうでない場合は実行を停止します。その値は、ビルド番号を更新するために使用されます。

  • バージョン管理システムをApple Genericに設定します。

デフォルトでは、Xcodeはバージョン管理システムを使用しません。バージョン管理システムをApple Genericに設定すると、Xcodeがagvtoolで生成されたすべてのバージョン情報をプロジェクトに含めるようにします。

Set Versioning System to Apple Generic

  1. バージョンとビルド番号を設定します

agvtoolは、アプリケーションのInfo.plistでバージョンとビルド番号を検索します。存在する場合は更新し、それ以外の場合は何もしません。次の図に示すように、Info.plistにCFBundleVersion(バンドルバージョン)キーとCFBundleShortVersionString(バンドルバージョン文字列、短い)キーが存在することを確認してください。

Set up your version and build numbers

Xcodeを終了し、ターミナルアプリケーションで.xcodeprojプロジェクトファイルを含むディレクトリに移動してから、次のコマンドを実行します。 .xcodeprojプロジェクトファイルには、agvtoolで使用されるproject.pbxprojが含まれています。 (これは、コマンドラインの代わりにスクリプトで実行できる部分です。)

バージョン番号の更新

バージョン番号を特定のバージョンに更新するには、次を実行します

xcrun agvtool new-marketing-version <your_specific_version>

Ex:バージョン番号を2.0に更新

xcrun agvtool new-marketing-version 2.0

ビルド番号の更新

ビルド番号を自動的にインクリメントするには、次を実行します

xcrun agvtool next-version -all

アプリケーションのビルド番号を特定のバージョンに設定するには、次を実行します

xcrun agvtool new-version -all <your_specific_version>

Ex:ビルド番号を2.6.9に設定します

xcrun agvtool new-version -all 2.6.9

ボーナス:

現在のバージョン番号を表示するには、次を実行します

xcrun agvtool what-marketing-version

現在のビルド番号を表示するには、次を実行します

xcrun agvtool what-version
14
FormigaNinja

FWIW-これは現在、ビルド番号を増やすために使用しているものですリリースビルドのみ(アーカイブを含む)。 Xcode 5.1で正常に動作します。

スニペットをRun scriptビルドフェーズにXcodeで直接コピー/ペーストします。

buildnum=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$PRODUCT_SETTINGS_PATH")

if [ "$CONFIGURATION" = "Release" ]; then
buildnum=$((buildnum + 1))
echo "Build number updated to $buildnum"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildnum" "$PRODUCT_SETTINGS_PATH"
fi;
11
Jay

スクリプトをありがとう。うまくいきます。

Info.plistはスペースを含む名前のサブディレクトリにあるため、plistパスを引用符で囲んでRun Scriptを変更する必要がありました。

${PROJECT_DIR}/tools/bump_build_number.sh "${PROJECT_DIR}/${INFOPLIST_FILE}"

すべてのパスを引用符で囲んだ同じ方法でシェルスクリプト:

#!/bin/sh

if [ $# -ne 1 ]; then
    echo usage: $0 plist-file
    exit 1
fi

plist=$1
dir=$(dirname "$plist")

# Only increment the build number if source files have changed
if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
    buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$plist")
    if [ -z "$buildnum" ]; then
        echo "No build number in $plist"
        exit 2
    fi
    buildnum=$(expr $buildnum + 1)
    /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "$plist"
    echo "Incremented build number to $buildnum"
else
    echo "Not incrementing build number as source files have not changed"
fi
7
massimobio

現在使用しているスクリプトは、上記の Alix's に非常に基づいています。以下の私の適応は、リリース/アーカイブビルドでのみ自動インクリメントを行うためのチェックを追加します。

その変更がないと、各開発者が独自のレートでビルド番号をインクリメントするため、バージョン管理の競合が発生します。そして、ビルド番号が常に変化するため、git履歴が不必要に汚染されるという事実。

# xcode-build-bump.sh
# @desc Auto-increment Xcode target build number every time the project is archived
# @src stackoverflow.com/a/15483906
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)

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

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

GitHub Gist としても利用できます(コピーと貼り付けがやや簡単です)。

6
Matthew

autorevision の使用をお勧めします。

Xcodeでは、ビルド時にinfo.plistで展開される値を提供するために、ヘッダーファイル(vcsではなく、ビルド時に自動生成できる)を使用できます。これを設定するためのウォークスルーは autorevision website にあります。

Autorevisionには、これらのタイプヘッダーファイルを対象とした出力タイプがあり、まさにこのような状況に役立ちます。

5
dak180

これらのソリューションのいくつかの問題の1つは、 Launch Servicesが認識するのは  バンドルバージョンの5つの主要な数字 。私は数千のビルド番号を持つプロジェクトを持っているので、あまり重要でない数字のいくつかを使用したかったです。

このPerlスクリプトは、現在のターゲットのInfo.plistsだけでなく、プロジェクト内のすべてのInfo.plistsをインクリメントするため、ビルド番号はすべてロックステップのままです。また、1つのパッチ番号と2つのマイナー番号を使用するため、ビルド1234にはバージョン1.23.4が与えられます。ビルド前の動作として使用するため、ビルドするすべてのプロジェクトに適用されます。

スクリプトはかなり強引ですが、私にとってはうまくいきます。

#!/usr/bin/Perl

use strict;
use warnings;
use v5.12.0;

use Dir::Iterate;

for my $plist_file(grepdir { /-Info.plist$/ } '.') {
    my $build = `/usr/libexec/PlistBuddy -c "Print CFBundleVersion" '$plist_file'`;
    chomp $build;

    next unless $build;

    # Strip dots
    $build =~ s/\.//g;
    $build =~ s/^0//g;

    # Increment
    $build++;

    # Re-insert dots
    $build =~ s/^(\d{0,4}?) (\d{0,2}?) (\d{0,1}?)$/$1.$2.$3/x;

    # Insert zeroes
    $build =~ s{(^|\.)\.}{${1}0.}g;

    system qq(/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build" '$plist_file');
}
4

Appleの汎用バージョン管理 を使用できます。基本的には、.xcprojファイルをホストするディレクトリ内からagvtool next-version -allを呼び出すだけです。詳細については、上記のURLをご覧ください。

4
Valentin Radu

Wil Gieselerのソリューション に基づいて、変更したい変更が1つだけありました。彼のソリューションは、gitコミットの数をビルド番号に入れます。有用ですが、それでもそのビルドを作成した実際のコミットを見つけるのに苦労します。ビルド番号が単調に増加するかどうかはあまり気にしなかったので、特定のバイナリを生成したコミットにもっと簡単にアクセスできるように、その要件を下げました。

そのため、最初のスクリプトを次のように変更しました。

# Set the build number to the decimal conversion of the short version of the current git SHA

# Get the short version of the current git SHA in hexadecimal
SHA=$(git rev-parse --short @)
# Uppercase any alphabetic chars in SHA (bc doesn't like lowercase hex numbers)
UPPERCASE_SHA=$(tr '[:lower:]' '[:upper:]' <<< "$SHA")
# Use bc to convert the uppercase SHA from hex to decimal
BUILD_NUM=$(bc <<< "ibase=16;obase=A;$UPPERCASE_SHA")
# Set our build number to that
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUM" "${PROJECT_DIR}/${INFOPLIST_FILE}"

# To convert a build number back to a usable git SHA, run the following, substituting the build number for <build number>
# bc <<< "ibase=10;obase=16;<build number>"

これは、現在のgit SHAの短いバージョンを10進数に変換します。 16進文字はAppleのビルド番号の要件をうまく満たしていないため、これを行う必要がありました。元に戻すには、次のように実行するだけです。

SHA=$(bc <<< "ibase=10;obase=16;<build number>")

bashでは、<build number>はバイナリから取得したビルド番号です。次に、git checkout $SHAを実行するだけです。

これは Wil Gieselerのソリューション の適応であるため、上記のように、次のビルド後スクリプトも必要です。

# Set the build number to "DEVELOPMENT"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"

これにより、git履歴がクリーンになります。

3
ravron

部族を見つけたような気がします。部族、VersionXに面白がってほしい。

10年前、25を超えるXcodeプロジェクトが含まれるワークスペースで作業しているときに、時々更新するプロジェクトを1つまたは2つしか管理していない場合、バージョンを自動化し、不合理に思える程度に文字列の更新を構築する機会を得ました。

VersionX:

  • ビルドの種類を認識している(リリース/デバッグ)
  • ビルド時にリポジトリから情報を収集します(gitサポートが含まれていますが、hg、svn、または使用するものに合わせてカスタマイズできます)
  • 簡単にカスタマイズ可能な派手なマーケティングバージョンの文字列(App Storeが規約を課す前にはるかにバリエーションがあった)を提供するため、たとえばgitタグ規約を使用して「ベータ」のシンボルを含む文字列を自動的にインクリメントできます。
  • バージョンおよびコミット情報を含むインスタンス変数が入力されたクラスが含まれます。これは、Aboutパネルにデータを入力し、ロギング文字列、クラッシュレポート、または事前に入力された情報を含むユーザーの電子メールバグレポートを作成するのに役立ちます。

作るのは楽しかったです。私は、Xcodeビルドシステムについて多くのことを学びました。

以下は、VersionXが自動的に生成することができる派手なバージョンとビルド文字列のタイプの例です。

VersionX 1.0.1β7(c5959a3「クリーン」)

マーケティングバージョン:VersionX 1.0.1β7「1.0.1はコミットのタグから派生し、「ベータ7」はコミット数、またはビルド数(例)。

ビルドバージョン:(c5959a3“ Clean”)短いコミットハッシュを表示し、ビルドディレクトリにコミットされていない変更がないことを通知します。

VersionX(GitHubのソース)-Xcodeプロジェクトのバージョンとビルド文字列を自動的にインクリメントするためのバロックシステム

The VersionX Documentation。

2

archiveの場合にのみこれを実行できます(たとえば、TFにアップロードします)。そうしないと、バージョン番号がすぐに上がる可能性があります。

スキーム(製品/スキームの編集/アーカイブ/事前アクション)で、アーカイブするときにのみ実行されるスクリプトを追加できます。

また、アプリのバージョンを増やすたびにビルド番号をリセットすることもできます。

最後に、代わりにアーカイブを使用する場合、安全に無効にすることができます:

# if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
...
# else
    # echo "Not incrementing build number as source files have not changed"
# fi

ビルド番号はarchive ...の場合にのみインクリメントされるため.

編集:私が言ったことを修正し、アーカイブの事前アクションはビルド後に(ただしアーカイブの前に)発生するため、次のアーカイブのためにビルド番号が増分されます...しかし、新しいスキームを作成してビルドにこのアクションを追加することができますアクション)この新しいスキームのセクション。新しいビルドを作成するときにこのスキームを使用します

2
Hugues BR

変更された手順を試してみましたが、うまくいきませんでした。

  1. Xcode 4.2.1は、.xcodeprojのxcuserdataサブディレクトリを変更します

  2. gitはProject-Info.plistの以前の変更を記録します

次の変更により、これらは無視され、本物の変更のみにフラグが付けられます。

if [ -n "$(find $dir \! -path "*xcuserdata*" \! -path "*.git" -newer $plist)" ]; then
2
Milliways

ビルド番号には最新のSVNリビジョンを使用しています。ビルドディレクトリのInfo.plistを変更しても、ソースのInfo.plistには影響しません。

# use the last SVN revision as the build number:
Info_plist="$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Info.plist"
defaults write "${Info_plist}" CFBundleVersion `svn stat -u | awk '/'"Status against revision:"'/ {print $4}'`
2
jack

次の方法でbuild numberを更新します。

$INFO_FILEは、plistファイルのパスです。 $build_numberは、この建物の新しいビルド番号です。

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_number" "${INFO_FILE}"

一般的に、私の$build_numbermajorminorの部分で構成されています。 minorはプロジェクト情報から取得されます。したがって、major部分を生成する方法を説明します。

## Composed by `major` and `minor`. 
## `minor` is parsed from project information. It's another story.
## Examples: `21.1`, or `21.1.3`
build_number="${major_number}.${minor_number}"

$build_numberを決定する2つの戦略があります。

最初の戦略

この戦略は、git tagカウントを使用して、build numbermajorを決定します。プロジェクトの53タグがある場合、次のシェルスクリプトによって53を返します。

一般的に、増加しています。また、公開前に開発者にgitタグを配置するよう強制します。

major_number=$(git tag -l | wc -l | grep -oE "\d+")

第二の戦略

Jenkins CIシステムがmajor部分を決定するようにします。環境変数BUILD_NUMBERがあります。 CIシステムで構築すると、自動的に増加します。この情報は、CIシステムのプロジェクト履歴を追跡するのに役立ちます。

major_number=${BUILD_NUMBER}
1
AechoLiu

Xcodebumpと呼ばれる、私が開発している新しいツールをチェックしてみてください。 CFBundleShortVersionStringとCFBundleVersionの両方の更新を処理できます。最後のステップとして、gitにチェックインし、それらのCFBundle値と一致するようにコミットにタグを付けます。

Xcodebumpプロジェクト は次の場所にあります。

https://github.com/markeissler/Xcodebump

1
markeissler

更新されたバージョンです。これは、iOS 11のXcode 9.3.1で機能します。

アプリケーションターゲットの[ビルドフェーズ]をクリックし、[+]アイコンをクリックして新しい実行スクリプトを追加し、ボックスにこのコードを貼り付けます。

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

Info.plistファイルに移動し、「Bundle version」を1に設定し、「Bundle versions string、short」を1に設定する必要があります。

Info.plistを表示してプロジェクトをビルドすると、バンドルバージョン(ビルド番号)が変更されます。

  • Xcode 9.3.1の時点では、これらの変更は[全般]タブからは表示されませんが、ビルドをアーカイブするとき、およびInfo.plistで変更が表示されることに注意してください。
0
L. Davis

agvtoolを使用したバージョンとビルド番号の自動化 を使用するのが最も便利です。

これを試して:

  1. 上記にリンクされているAppleのドキュメントの説明に従って構成します。
  2. scriptをプロジェクトの事前アクションとして追加->スキームの編集...->アーカイブ(または必要に応じてその他)
  3. 設定:<your_app_target>からビルド設定を提供します

スクリプト(最初の行はオプションです):

exec > ${PROJECT_DIR}/prebuild.log 2>&1
cd ${PROJECT_DIR}
xcrun agvtool next-version -all
cd -
0
goce

これが私の解決策です。あなたが私のような場合:セマンティックバージョニングのような、Rubyのようなターミナルフレンドリー、これを試してください。

これを含むRakefileという名前のファイルを作成します。

require "xcodeproj"
require "versionomy"

XCODEPROJECT = "MyProject.xcodeproj"
INFOPLISTFILE = "MyProject/MyProject-Info.plist"

$UPDATES = [:major,:minor,:tiny]
$UPDATES.each { |part|
  desc "increment #{part} part of version"
  task "increment:#{part}" do |task|
    version=`/usr/libexec/Plistbuddy -c "Print CFBundleVersion" #{INFOPLISTFILE}`.chomp
    version=Versionomy.parse(version)
    version=version.bump(part)

    # I use the same string for CFBundleVersion and CFBundleShortVersionString for now
    `/usr/libexec/PlistBuddy -c "Set :CFBundleVersion #{version}" #{INFOPLISTFILE}`
    `/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString #{version}" #{INFOPLISTFILE}`
    print "version upgraded to #{version}\n"
  end
}

準備:gem install xcodeproj versionomy

実行:rake increment:majorまたはrake increment:minorまたはrake increment:tinyいつでも好きなときに。

0
mash