Was ist der Unterschied zwischen "Versionsnummer" in iTunes Connect, "Bundle-Version" und "Bundle-Versionszeichenfolge" in Xcode?

94

In Apples Dokument hätte klarer dargelegt werden können, wie eine Update-Version eingereicht werden kann.

Wie im Titel gefragt, was ist der Unterschied zwischen

  1. Versionsnummer in iTunes Connect (die Sie angeben müssen, wenn Sie ein Update einreichen)
  2. Bundle-Version in xcode
  3. Bundle-Versionen String, kurz

Sind sie in irgendeiner Weise verwandt?

Eugen
quelle
12
Apple und ihre verwirrenden Begriffe / Felder ...: /
BoltClock
Bitte sehen Sie meine vorherige Antwort: stackoverflow.com/a/31921249/936957
Yunus Nedim Mehel

Antworten:

142

Ja, sie sind verwandt. Sie beziehen sich alle auf die Version Ihrer Anwendung.

  • iTunes Connect
    Dies ist die im App Store angezeigte Versionsnummer. Dies muss eine reine Versionsnummer sein1.2.3

  • Bundle-Version (CFBundleVersion)
    Dies muss keine reine Versionsnummer sein. Dies kann so etwas wie 12345oder sein 1.2.3 (Build 12345AB). Dies wird beispielsweise im Fenster "Info" für Mac OS X-Apps angezeigt und ist häufig eher eine "Build-Nummer" als eine "Versionsnummer".

  • Bundle-Versionszeichenfolge (CFBundleShortVersionString) Dieser Wert wird als "echte" Versionsnummer verwendet. Dies muss dieselbe Zeichenfolge sein, die für die Version in iTunes Connect verwendet wurde .

Update:
Wie von @snlehton hervorgehoben, muss die CFBundleVersion eine reine Versionsnummer sein, wie 1.2.3wenn Sie Ihre Anwendung in den (iOS) App Store hochladen möchten.

Fabian Kreiser
quelle
3
Zum Testen setzen Sie die Bundle-Versionszeichenfolge auf die endgültige Versionsnummer wie 1.2.3und erhöhen dann die Bundle-Version für jeden Build.
Fabian Kreiser
19
DAS IST FALSCH CFBundleVersion muss für xyz aktiviert sein, sonst schlägt das Hochladen eines Builds fehl! Link
Snlehton
2
Ich habe kürzlich einen Build mit CFBundleVersion mit "1.0.2 RC3" eingereicht und er wurde mit der Fehlermeldung "Das Bundle ist ungültig. Der Schlüssel CFBundleVersion in der Datei Info.plist muss eine durch Perioden getrennte Liste nicht negativer Ganzzahlen sein." Ich denke, das nn.n.nxnnn ist das richtige Format, habe es aber noch nicht ausprobiert.
Snlehton
3
CFBundleVersion von 1235 hier, keine Probleme
Piotr Tomasik
4
Die Verwirrung hier ist, dass der CFBundleShortVersionString optional ist und wenn er festgelegt ist, ändert er, wofür die CFBundleVersion verwendet wird. Wenn nur CFBundleVersion enthalten ist, muss dies die öffentliche Versionsnummer sein, z. B. 1.0. Wenn jedoch sowohl CFBundleVersion als auch CFBundleShortVersionString festgelegt sind, muss der CFBundleShortVersionString jetzt die öffentliche Versionsnummer enthalten, z. B. 1.0. Und jetzt ändert sich die CFBundleVersion in die Build-Nummer, die normalerweise eine einzelne Ganzzahl ist, z. B. 374629. Hoffentlich wird dies geklärt.
Malhal
27

Ja, sie sind verwandt, aber ihre Definition hängt davon ab, wie sie verwendet werden.

  • iTunes Connect-Version

    Muss immer eine Versionsnummer sein, zB 1.0

Verwendungsmodus 1 - Nur CFBundleVersion ist eingestellt

  • Bundle-Version (CFBundleVersion)

    Muss eine Versionsnummer sein, zB 1.0. Muss mit der iTunes Connect-Version übereinstimmen.

Verwendungsmodus 2 - Sowohl CFBundleVersion als auch CFBundleShortVersionString sind festgelegt

  • Bundle-Version (CFBundleVersion)

    Muss eine Build-Nummer sein, z. B. eine einzelne Ganzzahl wie 435163.

  • Bundle Short Version String (CFBundleShortVersionString)

    Muss eine Versionsnummer sein, zB 1.0. Muss mit der iTunes Connect-Version übereinstimmen.

Der Verwendungsmodus 2 ist der beste Weg. Hier sind einige Beispielnummern für den Upgrade-Pfad einer App:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

Ein zusätzlicher Hinweis zu Versionsnummern: Wenn Sie ein kleines Update (z. B. eine Fehlerbehebung) an Ihre App senden, dürfen Sie niemals Punkte in der Versionsnummer verpassen, z. B. immer 1.0.1 und NIEMALS 1.01 verwenden, da Sie sonst das Risiko eingehen, diese nicht verwenden zu können bestimmte Versionsnummern in der Zukunft, da es nicht möglich ist, sie zu erhöhen.

malhal
quelle
2
Diese Tabelle allein erklärt am besten, wie diese beiden Zahlen zusammenhängen und in der Praxis verwendet werden. Vielen Dank.
Joshua Pinter
Muss mit der iTunes Connect-Version übereinstimmen. Dies ist keine harte Anforderung (auch wenn es ein MUSS sein sollte)
Marco Pappalardo
13

Ja, sie sind alle verwandt.

Die Versionsnummer in itunesconnect ist die Versionsnummer, die Sie angeben müssen. Zum Beispiel 2.1.1 oder 3.1.2 usw. Dies sollte auch dem CFBundleShortVersionString entsprechen .

Bundle-Version In Xcode ( CFBundleVersion ) steht nur die Build-Nummer, die eine Iteration (freigegeben oder unveröffentlicht) der Anwendung identifiziert.

Bundle-Versionen string, short ( CFBundleShortVersionString ) ist eine Zahl, die aus drei durch Punkte getrennten Ganzzahlen besteht. Zunächst werden alle wichtigen Aktualisierungen der Anwendung dargestellt, z. B. Aktualisierungen, die neue Funktionen implementieren, oder wichtige Änderungen. Die zweite Ganzzahl bezeichnet Revisionen, die weniger wichtige Funktionen implementieren. Die dritte Ganzzahl steht für Wartungsversionen.

Mayuur
quelle
3
Tatsächlich muss "Bundle-Versionen string, short" nicht DREI durch Punkte getrennte Zahlen sein. Ich denke, "1" und "1.1" sind auch gültig.
Nicolas Miari
Nach meinem Test ist die Versionsnummer in itunesconnect völlig unabhängig von CFBundleVersion und ShortVersion. So können Sie sie sogar anders haben
Marco Pappalardo
11

Seien Sie vorsichtig mit CFBundleVersion . Es ist nicht nur eine Produktionsnummer. Dieser Wert wird von Apple während des binären Upload-Vorgangs überprüft und kann fehlschlagen.

Stellen Sie sicher, dass Sie CFBundleVersion mit dem Wert CFBundleShortVersionString festlegen, wenn Sie Ihre Version für die Übermittlung erstellen.

Siehe diesen Beitrag darüber

aponaute
quelle
3
Dies ist eine korrekte Information, die akzeptierte Antwort hat tatsächlich eine falsche.
Snlehton
9
Dies ist nicht korrekt, CFBundleVersionmuss nicht übereinstimmen CFBundleShortVersionString. Wenn Sie sich beispielsweise die aktuelle IPA-Datei für Chrome ansehen (jetzt im App Store), haben sie "34.0.1847.18" für CFBundleVersionund "34.1847.18" für CFBundleShortVersionString.
Programm
6
Es gibt keine Dokumentation, die besagt, dass CFBundleVersion und CFBundleShortVersionString identisch sein sollten.
Toydor
8

Die akzeptierte Antwort ist der richtige Weg - fügen Sie dies nur als Beispiel hinzu.

Für unsere letzte Version war der "Bundle Version String, short" erforderlich, und ich habe ihn mit der Bundle-Versionsnummer (1.2.8 für unsere App) abgeglichen.

Anschließend habe ich Testflight aktiviert und die Version bis zur Apple-Überprüfung (1.2.8) unseren internen Testern zur Verfügung gestellt. Ein Tester fand jedoch ein Problem, das behoben werden musste, und wir löschten die vorhandene Binärdatei. Beim Hochladen eines neuen Builds wurde eine Fehlermeldung angezeigt, dass die Build-Version bereits hochgeladen wurde.

Nachdem ich einige SO-Links und Apple-Dokumente gelesen hatte, bestand mein Verständnis darin, die Bundle-Version 1.2.8.001 zu erstellen, während die Bundle-Version so kurz wie sie war beibehalten wurde. Wenn ein neuer Build erforderlich ist, erhöhen wir die Bundle-Version auf 1.2.8.002.

Hinweis: Der Upload wurde akzeptiert und der Build wird in der Vorabversion als "1.2.8.001" angezeigt. Die Versionsnummer bleibt 1.2.8.

ahash
quelle
3

Die akzeptierte Antwort dieses Links enthält gute Details :: Welche iOS-App-Versions- / Build-Nummer (n) MUSS bei der Veröffentlichung im App Store erhöht werden?

Aus Apple Docs

CFBundleVersion (Bundle-Version)

CFBundleVersion (String - iOS, OS X) gibt die Build-Versionsnummer des Bundles an, die eine Iteration (freigegeben oder unveröffentlicht) des Bundles identifiziert. Die Build-Versionsnummer sollte eine Zeichenfolge sein, die aus drei nicht negativen, durch Perioden getrennten Ganzzahlen besteht, wobei die erste Ganzzahl größer als Null ist. Die Zeichenfolge sollte nur numerische (0-9) und Punktzeichen (.) Enthalten. Führende Nullen werden von jeder Ganzzahl abgeschnitten und ignoriert (dh 1.02.3 entspricht 1.2.3). Dieser Schlüssel ist nicht lokalisierbar.

CFBundleShortVersionString (String für Bundle-Versionen, kurz)

CFBundleShortVersionString (String - iOS, OS X) gibt die Versionsnummer des Bundles an, die eine freigegebene Iteration der App identifiziert. Die Versionsnummer der Version ist eine Zeichenfolge, die aus drei durch Punkte getrennten Ganzzahlen besteht. Die erste Ganzzahl repräsentiert wichtige Revisionen der App, z. B. Revisionen, die neue Funktionen implementieren, oder wichtige Änderungen. Die zweite Ganzzahl bezeichnet Revisionen, die weniger wichtige Funktionen implementieren. Die dritte Ganzzahl steht für Wartungsversionen.

Der Wert für diesen Schlüssel unterscheidet sich vom Wert für CFBundleVersion, der eine Iteration (freigegeben oder unveröffentlicht) der App identifiziert. Dieser Schlüssel kann lokalisiert werden, indem er in Ihre InfoPlist.strings-Dateien aufgenommen wird.

Maulkorb
quelle