web-dev-qa-db-ja.com

App Storeのリリース時にどのiOSアプリバージョン/ビルド番号をインクリメントする必要がありますか?

IOSアプリのバージョン/ビルドフィールドは次のとおりです。

  • "Version"CFBundleShortVersionString(String-iOS、OS X)は、バンドルのリリースバージョン番号を指定します。これは、アプリのリリースされた反復を識別します。リリースバージョン番号は、ピリオドで区切られた3つの整数で構成される文字列です。

  • "Build"CFBundleVersion(String-iOS、OS X)は、バンドルのビルドバージョン番号を指定します。これは、(リリース済みまたは未リリースの)イテレーションを識別しますバンドル。ビルドバージョン番号は、最初の整数がゼロより大きい3つの負でないピリオドで区切られた整数で構成される文字列でなければなりません。文字列には、数字(0〜9)とピリオド(。)のみを含める必要があります。先行ゼロは各整数から切り捨てられ、無視されます(つまり、1.02.3は1.2.3と同等です)。このキーはローカライズできません。

  • "iTunes Connectバージョン番号":iTunes Connectでアプリの新しいバージョンを作成するときに指定するバージョン番号。

私の質問は:

アプリの新しいバージョンをiTunes Connectにアップロードしたり、App Storeにリリースしたりするときに、どのバージョン/ビルド番号を増やす必要がありますか

「バージョン」CFBundleShortVersionStringまたは「ビルド」CFBundleVersionをアプリの更新間で同じままにすることはできますか?

Appleソースの追加ポイント、または無効なバージョン/ビルド番号のアップロード時にiTunesConnectが表示する正確なエラーメッセージ。


Android/Google Playのメモ:

この質問を促す議論は、Google PlayストアのAndroidアプリのパブリック「バージョン」はnotである必要があるということですインクリメントされ、検証されませんAndroid:versionNameは、リリース、アップグレード、ダウングレード間で同じままにするか、有効な「バージョン番号」と思われるものではなく、任意のランダムな文字列にすることができます。

Android:versionName —ユーザーに表示されるアプリケーションコードのリリースバージョンを表す文字列値。

値は文字列であるため、アプリケーションバージョンを<major>.<minor>.<point>文字列、、または他のタイプの絶対バージョンまたは相対バージョンとして記述できます。識別子。

AndroidのversionNameとversionNumberの違い

Android:versionCodeは、リリース時に増加する整数になるように強制されます。


Appleのドキュメント

新しく受け入れられた回答 で述べたように、Appleは最近、バージョンとビルド番号のスキームを詳述するテクニカルノートを公開しました。

アップルテクニカルノートTN2420-バージョン番号とビルド番号

88
pkamb

AppleテクニカルノートTN2420、バージョン番号とビルド番号

概要:

  • ペア(VersionBuild number)は一意でなければなりません。
    • シーケンスは有効です:(1.0.1、12)->(1.0.1、13)->(1.0.2、13)->(1.0.2、14)...
  • VersionCFBundleShortVersionString)は昇順である必要があります。
  • Build numberCFBundleVersion)は昇順である必要があります。

バージョン番号とビルド番号のチェックリスト

App Storeに新しいビルドを送信するときに確認できるいくつかの項目を次に示します。バージョン番号とビルド番号が適切に設定されていることを確認すると、不適切に構成されているためにアプリが自動的に拒否されるのを防ぐことができます。

  1. アプリの新しいバージョンごとに、新しいバージョン番号を作成する必要があります。この番号は、最後に使用したバージョン番号よりも大きい値にする必要があります。アプリの特定のリリースに対して多くのビルドを提供できますが、アプリの新しいリリースごとに1つの新しいバージョン番号を使用するだけで済みます。
  2. バージョン番号を再利用することはできません。
  3. 送信する新しいビルドごとに、最後に使用した(同じバージョンの)ビルド番号より大きい値を持つ新しいビルド番号を作成する必要があります。
  4. 異なるリリーストレインでビルド番号を再利用できますが、同じリリーストレイン内でビルド番号を再利用することはできません。

チェックリストに基づいて、次の(Version, Build Number)シーケンスも有効です。

  • ケース:Build Numberを異なるリリーストレインで再利用します。

    (1.0.0、1)->(1.0.0、2)-> ...->(1.0.0、11)->(1.0.11)->(1.0.1、2)

85
AechoLiu

CFBundleShortVersionStringは、iTunes Connectに指定したバージョン番号と一致する必要があります。また、ユーザーがApp Storeでアプリを見たときに表示されるバージョン番号でもあります。

バージョン番号はストアに表示され、そのバージョンは後でiTunes Connectで入力したバージョン番号と一致する必要があります。

ソース

CFBundleVersionはApp Storeには表示されませんが、アプリが更新された時期を判断するためにiTunesによって使用されます。

「バージョン番号とビルド文字列の設定」で説明されているようにビルド文字列を更新すると、iTunesはビルド文字列が変更されたことを認識し、新しいiOS App Storeパッケージをテストデバイスに正しく同期します。

ソース

より具体的に質問に答える...

アプリの新しいバージョンをアプリストアにアップロードするときに、どのバージョン/ビルド番号を増やす必要がありますか?

両方。 1つはApp Storeに表示され、もう1つはiTunesがアプリを更新するために使用します。

CFBundleShortVersionStringまたはCFBundleVersionのいずれかをアプリの更新間で同じままにできますか?

いいえ(メタ質問、ユースケースはここにありますか?何らかの方法でペイロードを編集した場合、ビルドは異なり、ユーザーはそれについて知りたいでしょう)。試してみると、次のようなエラーメッセージが表示されます。

Error messages

または、数値が大きい数値がアプリの新しいバージョンでアップロードされるように、以前のそれぞれの数値と比較されますか?

はい。 semver.org 標準を使用します。

CFBundleShortVersionStringとCFBundleVersionの番号は互いに比較されていますか?

番号。

37
Andy

CFBundleShortVersionStringは、バージョンの公開「名前」です(例:「2.5」または「3.8.1」)。 releaseごとに増やす必要があります。

CFBundleVersionはプライベートbuild番号。 AppStoreには表示されません。それぞれuploadで増やす必要があります。つまり、オンラインになる前にバイナリを拒否し、新しいバイナリをアップロードする場合、同じCFBundleShortVersionStringが必要になりますが、より高いCFBundleVersion(例:パブリック "2.5"、プライベート "2.5"、そしてバイナリ拒否、プライベート "2.5.1"の再アップロード)

2016年11月16日に編集:

/\CFBundleVersionプロパティも使用されます(CFBundleName)コード内の NSURLConnection によって送信されたUser-Agentヘッダー内。

例:ifCFBundleNameMyAppおよびCFBundleVersionが2.21の場合、コードで NSURLConnection を使用して直接送信されたプログラムHTTPクエリはヘッダーを埋め込みます。

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(これは、UIWebViewによって自動的に発行された要求には適用されません)。

29
Gabriel

CFBundleVersionCFBundleShortVersionStringの両方は、APP STOREに新しいバージョンをリリースするときにを増やす必要があります。

さらに、文字列の1つは、iTunes Connectで指定されたバージョンと一致する必要があります。

Xcode Organizer Validator error: must increment the version number.

この質問CFBundleVersionおよびCFBundleShortVersionStringがインクリメントされていない場合、アプリの検証を拒否するXcodeオーガナイザーのバリデーターの上記のスクリーンショットが含まれています。

  • このバンドルは無効です。 Info.plistファイルのキーCFBundleVersion [1.0]の値には、以前にアップロードされたバージョン[1.134]よりも高いバージョンが含まれている必要があります。

  • このバンドルは無効です。 Info.plistファイルのキーCFBundleShortVersionString [1.0]の値には、以前にアップロードされたバージョン[1.134]よりも高いバージョンが含まれている必要があります。

バリデーターは、文字列の1つがiTunes Connectで作成されたアプリのバージョンと一致する必要があることを証明するエラーもスローします。

  • バージョンの不一致。 Info.plistのCFBundleVersion ['1.0']もCFBundleShortVersionString ['1.0']も、iTunes Connect ['1.4']で設定されたアプリのバージョンと一致しません。
5
pkamb

CFBundleVersionとCFBundleShortVersionStringは、アプリの最後のバージョン番号よりも大きくなければなりません。それらを同じに保つことは良い習慣です。それらは-info.plistにあります。

オーガナイザーでアプリを検証しようとすると、どちらかがインクリメントされていない場合、エラーがスローされます。昨夜私に起こった。

5
xoail

増分する必要がありますboth

新しいバージョンをアップロードする場合、iTunes Connectで新しいバージョンを作成する必要があります。これは、以前のリリースよりも自動的に高くなります。 iTunes Connectのこのバージョンでは、同じバージョン番号のバイナリが必要になるため、CFBundleShortVersionStringを増やす必要があります。

バージョンを更新しても、CFBundleVersionの増分を忘れると、アップロード中にエラーが発生します。 pkambの答えとスクリーンショットをご覧ください。

CFBundleShortVersionStringおよびCFBundleVersionの詳細については、以下を参照してください。 https://stackoverflow.com/a/31921249/936957

1