Qual è la differenza tra "numero di versione" in iTunes Connect, "versione bundle", "stringa versione bundle" in Xcode?


94

Il documento di Apple avrebbe potuto essere più chiaro su come inviare una versione di aggiornamento.

Come chiesto nel titolo, qual è la differenza tra

  1. numero di versione in itunes connect (che devi fornire quando invii un aggiornamento)
  2. versione bundle in xcode
  3. stringa versioni bundle, short

Sono collegati in qualche modo?


12
Apple ei loro termini / campi confusi ...: /
BoltClock

Si prega di vedere la mia risposta precedente: stackoverflow.com/a/31921249/936957
Yunus Nedim Mehel

Risposte:


142

Sì, sono correlati. Si riferiscono tutti alla versione della tua applicazione.

  • iTunes Connect
    Questo è il numero di versione mostrato nell'App Store; Deve essere un numero di versione puro come1.2.3

  • Versione bundle (CFBundleVersion)
    Non è necessario che sia un numero di versione puro. Può essere qualcosa come 12345o 1.2.3 (Build 12345AB). Questo viene mostrato nella finestra Informazioni per le app Mac OS X, ad esempio, ed è spesso più un "Numero build" che un "Numero versione".

  • Stringa versione bundle (CFBundleShortVersionString) Questo valore viene utilizzato come numero di versione "reale". Questa deve essere la stessa stringa come utilizzato per la versione in iTunes Connect .

Aggiornamento:
come sottolineato da @snlehton, CFBundleVersion deve essere un numero di versione puro come 1.2.3quando si desidera caricare la propria applicazione nell'App Store (iOS).


3
Per il test , impostare la stringa della versione del bundle sul numero di versione finale come 1.2.3e quindi incrementare la versione del bundle per ogni build.
Fabian Kreiser

19
QUESTO È SBAGLIATO CFBundleVersion deve essere in xyz, altrimenti il ​​caricamento di una build fallirà! link
snlehton

2
Di recente ho inviato una build con CFBundleVersion con "1.0.2 RC3" e ha restituito il messaggio di errore: "Il pacchetto non è valido. La chiave CFBundleVersion nel file Info.plist deve essere un elenco separato da punti di numeri interi non negativi." Penso che nn.n.nxnnn sia il formato corretto da usare, ma non l'ho ancora provato.
snlehton

3
CFBundleVersion di 1235 qui, nessun problema
Piotr Tomasik

4
La confusione qui è perché CFBundleShortVersionString è facoltativo e quando viene impostato cambia ciò per cui viene utilizzato CFBundleVersion. Se si include solo CFBundleVersion, deve essere il numero di versione pubblica, ad esempio 1.0. Tuttavia, se sono impostati sia CFBundleVersion che CFBundleShortVersionString, CFBundleShortVersionString ora deve contenere il numero di versione pubblica, ad esempio 1.0. E ora CFBundleVersion cambia per essere il numero di build, che normalmente è un singolo intero, ad esempio 374629. Si spera che questo lo risolva.
malhal

27

Sì, sono correlati ma la loro definizione dipende da come vengono utilizzati.

  • Versione iTunes Connect

    Deve sempre essere un numero di versione, ad esempio 1.0

Modalità d'uso 1: è impostato solo CFBundleVersion

  • Versione bundle (CFBundleVersion)

    Deve essere un numero di versione, ad esempio 1.0. Deve corrispondere alla versione di iTunes Connect.

Modalità di utilizzo 2: sono impostati sia CFBundleVersion che CFBundleShortVersionString

  • Versione bundle (CFBundleVersion)

    Deve essere un numero di build, ad esempio un singolo intero come 435163.

  • Stringa versione breve bundle (CFBundleShortVersionString)

    Deve essere un numero di versione, ad esempio 1.0. Deve corrispondere alla versione di iTunes Connect.

La modalità d'uso 2 è il modo migliore per andare. Di seguito sono riportati alcuni numeri di esempio per il percorso di aggiornamento di un'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

Una nota in più sui numeri di versione: se invii un aggiornamento minore (ad es. Correzione di bug) alla tua app, non devi mai perdere punti nel numero di versione, ad es. Usa sempre 1.0.1 e MAI 1.01 o rischierai di non poterlo usare alcuni numeri di versione in futuro perché non sarà possibile incrementarli.


2
Quella tabella da sola fa il lavoro migliore per spiegare come questi due numeri sono correlati e utilizzati nella pratica. Grazie.
Joshua Pinter

Deve corrispondere alla versione di iTunes Connect. Non è un requisito difficile (anche se dovrebbe essere un MUST)
Marco Pappalardo

13

Sì, sono tutti imparentati.

Il numero di versione in itunesconnect è il numero di versione che devi fornire. Ad esempio, 2.1.1 o 3.1.2 ecc. Anche questo dovrebbe essere uguale a CFBundleShortVersionString .

Bundle Version In Xcode ( CFBundleVersion ) rappresenta solo il numero di build che identifica un'iterazione (rilasciata o non rilasciata) dell'applicazione.

Versioni bundle string, short ( CFBundleShortVersionString ) è un numero composto da tre numeri interi separati da punti. Il primo rappresenta tutti gli aggiornamenti principali dell'applicazione, come gli aggiornamenti che implementano nuove funzionalità o modifiche importanti. Il secondo numero intero denota revisioni che implementano caratteristiche meno prominenti. Il terzo numero intero rappresenta le versioni di manutenzione.


3
In realtà, "Stringa versioni bundle, breve" non ha bisogno di essere TRE numeri separati da punti. Penso che anche "1" e "1.1" siano validi.
Nicolas Miari

in realtà dal mio numero di versione di test in itunesconnect è completamente indipendente da CFBundleVersion e ShortVersion. Quindi puoi anche averli diversi
Marco Pappalardo

11

Fai attenzione a CFBundleVersion . Non è solo un numero di build di produzione. Questo valore viene verificato da Apple durante il processo di caricamento binario e può fallire.

Assicurati di impostare CFBundleVersion con il valore di CFBundleShortVersionString quando crei la tua versione da inviare.

Vedere questo post a riguardo


3
Questa è un'informazione corretta, la risposta accettata in realtà è sbagliata.
Snlehton

9
Questo non è corretto, CFBundleVersionnon deve corrispondere CFBundleShortVersionString. Ad esempio, se guardi il file .ipa corrente per Chrome (ora nell'app store) hanno "34.0.1847.18" per CFBundleVersione "34.1847.18" per CFBundleShortVersionString.
programma

6
Non esiste alcuna documentazione che affermi che CFBundleVersion e CFBundleShortVersionString dovrebbero essere la stessa cosa.
Toydor

8

La risposta accettata è la strada da percorrere, aggiungendola solo come esempio.

Per la nostra ultima versione, era richiesta la "Bundle Version String, short", e sono andato avanti e l'ho abbinata al numero di versione Bundle (1.2.8 per la nostra app).

Ho quindi abilitato Testflight e reso disponibile ai nostri tester interni la versione in attesa della revisione Apple (1.2.8). Un tester ha tuttavia trovato un problema che richiedeva una correzione e abbiamo eliminato il file binario in posizione. Durante il caricamento di una nuova build, abbiamo ricevuto un errore che indicava che la versione della build era già stata caricata.

Dopo aver letto alcuni collegamenti SO e documenti Apple, la mia comprensione era di creare la versione bundle: 1.2.8.001, mantenendo la versione bundle breve come era. Se è necessaria una nuova build, incrementiamo la versione del bundle a 1.2.8.002.

Nota: il caricamento è stato accettato e la build viene visualizzata come "1.2.8.001" nella versione preliminare. Il numero di versione rimane 1.2.8.


3

La risposta accettata di questo collegamento contiene buoni dettagli: Quale versione / numero di build dell'app iOS DEVE essere incrementata al rilascio dell'App Store?

Da Apple Docs

CFBundleVersion (versione bundle)

CFBundleVersion (String - iOS, OS X) specifica il numero di versione build del bundle, che identifica un'iterazione (rilasciata o non rilasciata) del bundle. Il numero di versione della build deve essere una stringa composta da tre numeri interi non negativi separati da punti con il primo numero intero maggiore di zero. La stringa deve contenere solo caratteri numerici (0-9) e punto (.). Gli zeri iniziali vengono troncati da ogni numero intero e verranno ignorati (ovvero 1.02.3 è equivalente a 1.2.3). Questa chiave non è localizzabile.

CFBundleShortVersionString (stringa versioni bundle, breve)

CFBundleShortVersionString (String - iOS, OS X) specifica il numero di versione di rilascio del bundle, che identifica un'iterazione rilasciata dell'app. Il numero di versione del rilascio è una stringa composta da tre numeri interi separati da punti. Il primo numero intero rappresenta le revisioni principali dell'app, ad esempio le revisioni che implementano nuove funzionalità o modifiche importanti. Il secondo numero intero denota revisioni che implementano caratteristiche meno prominenti. Il terzo numero intero rappresenta le versioni di manutenzione.

Il valore di questa chiave è diverso dal valore di CFBundleVersion, che identifica un'iterazione (rilasciata o non rilasciata) dell'app. Questa chiave può essere localizzata includendola nei file InfoPlist.strings.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.