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が表示する正確なエラーメッセージ。
この質問を促す議論は、Google PlayストアのAndroidアプリのパブリック「バージョン」はnotである必要があるということですインクリメントされ、検証されません。 Android:versionName
は、リリース、アップグレード、ダウングレード間で同じままにするか、有効な「バージョン番号」と思われるものではなく、任意のランダムな文字列にすることができます。
Android:versionName
—ユーザーに表示されるアプリケーションコードのリリースバージョンを表す文字列値。値は文字列であるため、アプリケーションバージョンを
<major>.<minor>.<point>
文字列、、または他のタイプの絶対バージョンまたは相対バージョンとして記述できます。識別子。
AndroidのversionNameとversionNumberの違い
Android:versionCode
は、リリース時に増加する整数になるように強制されます。
新しく受け入れられた回答 で述べたように、Appleは最近、バージョンとビルド番号のスキームを詳述するテクニカルノートを公開しました。
AppleテクニカルノートTN2420、バージョン番号とビルド番号
Version
、Build number
)は一意でなければなりません。Version
(CFBundleShortVersionString)は昇順である必要があります。Build number
(CFBundleVersion)は昇順である必要があります。バージョン番号とビルド番号のチェックリスト
App Storeに新しいビルドを送信するときに確認できるいくつかの項目を次に示します。バージョン番号とビルド番号が適切に設定されていることを確認すると、不適切に構成されているためにアプリが自動的に拒否されるのを防ぐことができます。
- アプリの新しいバージョンごとに、新しいバージョン番号を作成する必要があります。この番号は、最後に使用したバージョン番号よりも大きい値にする必要があります。アプリの特定のリリースに対して多くのビルドを提供できますが、アプリの新しいリリースごとに1つの新しいバージョン番号を使用するだけで済みます。
- バージョン番号を再利用することはできません。
- 送信する新しいビルドごとに、最後に使用した(同じバージョンの)ビルド番号より大きい値を持つ新しいビルド番号を作成する必要があります。
- 異なるリリーストレインでビルド番号を再利用できますが、同じリリーストレイン内でビルド番号を再利用することはできません。
チェックリストに基づいて、次の(Version, Build Number)
シーケンスも有効です。
ケース:Build Number
を異なるリリーストレインで再利用します。
(1.0.0、1)->(1.0.0、2)-> ...->(1.0.0、11)->(1.0.1、1)->(1.0.1、2)
CFBundleShortVersionString
は、iTunes Connectに指定したバージョン番号と一致する必要があります。また、ユーザーがApp Storeでアプリを見たときに表示されるバージョン番号でもあります。
バージョン番号はストアに表示され、そのバージョンは後でiTunes Connectで入力したバージョン番号と一致する必要があります。
CFBundleVersion
はApp Storeには表示されませんが、アプリが更新された時期を判断するためにiTunesによって使用されます。
「バージョン番号とビルド文字列の設定」で説明されているようにビルド文字列を更新すると、iTunesはビルド文字列が変更されたことを認識し、新しいiOS App Storeパッケージをテストデバイスに正しく同期します。
より具体的に質問に答える...
アプリの新しいバージョンをアプリストアにアップロードするときに、どのバージョン/ビルド番号を増やす必要がありますか?
両方。 1つはApp Storeに表示され、もう1つはiTunesがアプリを更新するために使用します。
CFBundleShortVersionStringまたはCFBundleVersionのいずれかをアプリの更新間で同じままにできますか?
いいえ(メタ質問、ユースケースはここにありますか?何らかの方法でペイロードを編集した場合、ビルドは異なり、ユーザーはそれについて知りたいでしょう)。試してみると、次のようなエラーメッセージが表示されます。
または、数値が大きい数値がアプリの新しいバージョンでアップロードされるように、以前のそれぞれの数値と比較されますか?
はい。 semver.org 標準を使用します。
CFBundleShortVersionStringとCFBundleVersionの番号は互いに比較されていますか?
番号。
CFBundleShortVersionStringは、バージョンの公開「名前」です(例:「2.5」または「3.8.1」)。 releaseごとに増やす必要があります。
CFBundleVersionはプライベートbuild番号。 AppStoreには表示されません。それぞれuploadで増やす必要があります。つまり、オンラインになる前にバイナリを拒否し、新しいバイナリをアップロードする場合、同じCFBundleShortVersionStringが必要になりますが、より高いCFBundleVersion(例:パブリック "2.5"、プライベート "2.5"、そしてバイナリ拒否、プライベート "2.5.1"の再アップロード)
/!\CFBundleVersionプロパティも使用されます(CFBundleName)コード内の NSURLConnection によって送信されたUser-Agent
ヘッダー内。
例:ifCFBundleNameはMyAppおよびCFBundleVersionが2.21の場合、コードで NSURLConnection を使用して直接送信されたプログラムHTTPクエリはヘッダーを埋め込みます。
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(これは、UIWebViewによって自動的に発行された要求には適用されません)。
CFBundleVersion
とCFBundleShortVersionString
の両方は、APP STOREに新しいバージョンをリリースするときにを増やす必要があります。
さらに、文字列の1つは、iTunes Connectで指定されたバージョンと一致する必要があります。
この質問CFBundleVersion
およびCFBundleShortVersionString
がインクリメントされていない場合、アプリの検証を拒否するXcodeオーガナイザーのバリデーターの上記のスクリーンショットが含まれています。
このバンドルは無効です。 Info.plistファイルのキーCFBundleVersion
[1.0]の値には、以前にアップロードされたバージョン[1.134]よりも高いバージョンが含まれている必要があります。
このバンドルは無効です。 Info.plistファイルのキーCFBundleShortVersionString
[1.0]の値には、以前にアップロードされたバージョン[1.134]よりも高いバージョンが含まれている必要があります。
バリデーターは、文字列の1つがiTunes Connectで作成されたアプリのバージョンと一致する必要があることを証明するエラーもスローします。
CFBundleVersionとCFBundleShortVersionStringは、アプリの最後のバージョン番号よりも大きくなければなりません。それらを同じに保つことは良い習慣です。それらは-info.plistにあります。
オーガナイザーでアプリを検証しようとすると、どちらかがインクリメントされていない場合、エラーがスローされます。昨夜私に起こった。
増分する必要がありますboth。
新しいバージョンをアップロードする場合、iTunes Connectで新しいバージョンを作成する必要があります。これは、以前のリリースよりも自動的に高くなります。 iTunes Connectのこのバージョンでは、同じバージョン番号のバイナリが必要になるため、CFBundleShortVersionString
を増やす必要があります。
バージョンを更新しても、CFBundleVersion
の増分を忘れると、アップロード中にエラーが発生します。 pkambの答えとスクリーンショットをご覧ください。
CFBundleShortVersionString
およびCFBundleVersion
の詳細については、以下を参照してください。 https://stackoverflow.com/a/31921249/936957