CFBundleVersion nell'errore di caricamento di Info.plist


108

"Il binario che hai caricato non era valido. La chiave CFBundleVersion nel file Info.plist deve contenere una versione superiore a quella della versione caricata in precedenza."

Ricevo questo errore quando vengo a caricare la mia applicazione.

Ho impostato la versione aggiornata a 1.2 su iTunes Connect e ho anche aggiornato il .plistfile a 1.2.

Non capisco perché ricevo questo errore. Qualsiasi aiuto sarebbe apprezzato. Grazie.


Perché non provare a impostarlo, ad esempio, su 1.2.1?
Nikita Rybak

Ho provato molte combinazioni. Nessuno funziona. Quell'errore continua a presentarsi.
Adam H

1
E qual è la versione caricata in precedenza (come si trova nella Info.plist dell'app attualmente in spedizione)?
Costique

Hai risolto questo problema? Lo stesso problema è accaduto a me all'improvviso. È frustrante.
Wayne Lo

Ho appena ricevuto un'e-mail con questo errore e si scopre che una delle mie vecchie build, che era bloccata in ITC come "elaborazione" nell'ultima settimana, è stata finalmente elaborata. Quando si è bloccato per la prima volta, ho reinviato un'altra build con un numero di build incrementato, quindi quando quella più vecchia è stata finalmente elaborata ha attivato l'errore.
Blwinters

Risposte:


210

C'è almeno un bug noto nel server di caricamento di Apple che non è stato risolto per più di 12 mesi. Cose da fare attenzione:

  1. Apple elimina tutti gli zeri iniziali all'interno del numero di versione; cioè la "stringa intera" NON viene trattata come un numero, invece i bit tra i punti vengono trattati come numeri SEPARATI. ad esempio "1.02" viene considerato da Apple come "1.2". Quindi, per Apple, 1.02 è MAGGIORE DI 1.1
  2. Apple a volte si "confonde" e sembra confrontare la tua app caricata con la versione di un'app DIVERSA che hai precedentemente caricato. È successo a molte persone e l'ho visto anch'io alcune volte
  3. Apple dovrebbe confrontare la "CFBundleVersion" (cioè la "versione bundle" non la "stringa versioni bundle, breve"); non confonderti.
  4. Spesso, l'unica soluzione praticabile è di urtare il numero anteriore (ad esempio il "2" in "2.4" - aumentalo a "3")
  5. Il numero di versione che carichi non è correlato al numero di versione che appare in iTunes: puoi inserire tutto ciò che vuoi, ed è quello che vedranno i tuoi utenti
  6. ... tranne che, se segnali anche il numero di versione "effettivo" all'interno della tua app, l'utente vedrà CFBundleVersion (di solito, dipende da come lo codifichi), piuttosto che la versione di iTunes (a cui - penso - non è possibile accedere da all'interno della tua app)

1
CFBundleVersion è ciò che in xcode 4.5 è etichettato "Build" e NON "Version"! La versione finisce con l'etichetta "CFBundleShortVersionString" nel file Info.plist. Quindi, in effetti, devi fornire un valore maggiore per Build rispetto al passato.
RickJansen

+1 Utile. L'ho usato 1.02per la mia versione precedente. E risolvilo usando questa risposta. Grazie.
Praveenkumar

Questa risposta dovrebbe essere aggiunta nella FAQsezione su come inviare un'app all'app store. :))
danypata

@Adam: come ho letto CFBundleShortVersionStringe il numero di versione fornito in iTunes Connect dovrebbe corrispondere. Ciò significa che se mostri il numero della tua versione nell'app che utilizzi CFBundleShortVersionString. Anche il CFBundleVersiondovrebbe essere aumentato e questo è quello che Apple utilizza per determinare se stai inviando una versione aggiornata della tua app.
test il

Apple ha recentemente ridefinito il significato di tutte le loro stringhe, in un modo NON compatibile con le versioni precedenti.
Adam

28

Aggiorna il numero di build. Il numero di versione è importante, ma il numero di build fa la differenza. Ad esempio, avevo la mia versione iniziale di un'app come:

version #: 1.0
build #:   1.0

Tuttavia, quando ho provato a caricare la versione successiva, ad es

version #: 1.1
build #:   1.0

Non accetterebbe il caricamento. Semplicemente incrementando la build # a 1.1 il caricamento è stato accettato.


Perfetto ... la modifica della build # l'ha fatto per me, il che è fantastico dato che volevo davvero mantenere sincronizzate la mia versione bundle e la versione di iTunes.
Aaron Hayman

9

Xcode 4 penserà che vuoi ricaricare la stessa versione se non archivi nuovamente l'applicazione. Anche se cambi la versione del bundle e ricostruisci, il caricamento non riuscirà. Ricordati di fare un " Archivio " nel menu Prodotto!


7

Molte delle risposte qui alla fine mi hanno aiutato, ma è stato solo quando ho visto il numero esatto di "versione" che Apple stava confrontando.

  1. Vai su iTunes Connect -> Gestisci le tue applicazioni
  2. Scegli l'applicazione per la quale desideri controllare la versione precedente
  3. Fare clic sul pulsante blu con l'etichetta Visualizza dettagli
  4. Fare clic sul collegamento con l'etichetta Dettagli binari
  5. Trova il valore fornito per la versione bundle

Anche se pensavo di aver inviato la versione 1.0.1, il numero effettivo memorizzato da Apple era 101. Alcuni dei commenti sopra mi hanno fatto credere che dovevo cambiare la mia versione in 2.0 (20) o 1.5 (15) o 1.2 (12 ): Come puoi vedere, sono tutti inferiori a 101. L'aggiornamento della mia versione numero 102 (senza i punti) ha risolto il problema.


6

Questo articolo sottolinea che il numero di versione visualizzato nell'app store non è necessariamente lo stesso del numero di versione del bundle. Quando visualizzi i dettagli della tua app in iTunes, c'è un collegamento denominato "Dettagli binari". Quella pagina mostra la versione del bundle. Una delle app su cui stavo lavorando era alla versione 1.0, ma la versione bundle era 2.0. Il caricamento di un pacchetto con la versione 1.1 non è riuscito, ma la 2.1 ha funzionato.

Quindi, c'è una versione dell'app e una versione bundle. Questo problema ha a che fare con la versione bundle.


5

Sembra che la confusione sia causata dal formato del numero. La versione del bundle non è un decimale. È una versione (o forse build) quindi 1.11 è in realtà "un punto undici". Quindi 1.11 è maggiore di 1.2. Ho avuto successo usando 1.20 in questo caso.


4

Di solito, ciò può essere causato dall'assenza del numero di versione. Quindi, aggiungi il numero di versione in Identità e controlla anche il numero di build.

inserisci qui la descrizione dell'immagine

Keep Coding ......... :)


3

Per me (Xcode 4.5) la modifica del numero di build ha risolto il problema. imposta le versioni a 1.0.2 ... 2.0.2 ecc. quindi aumenta build # (punto Adam 3 dammi un'idia dove cercare).


2

Dovresti essere in grado di accedere a iTunes Connect e vedere la versione corrente dell'app (comprese quelle che hai inviato ma non sono attive). Verificare di non aver precedentemente inviato una versione con un numero di versione superiore (o uguale).


Questo è fuorviante; Apple NON si confronta semplicemente con la versione iTunesConnect. cfr la risposta di Pieter di seguito per una risposta più accurata.
Adam

@Adam A partire da ora (2014-05), Apple confronta i numeri di versione interna della tua app iOS con il numero di versione di iTunesConnect. Se non corrispondono, viene visualizzato questo messaggio di avviso (non un errore): Version Mismatch - Neither CFBundleVersion ['201405030503'] nor CFBundleShortVersionString ['201405030503'] in the Info.plist match the version of the app set in iTunes Connect ['1.0.0'].ma questo confronto iTunesConnect non è la causa del problema in questa domanda. Il confronto con iTunesConnect è un semplice avvertimento, non un errore di arresto dello spettacolo.
Basil Bourque

2

Ho trascorso alcune ore cercando di risolvere questo problema. Ho controllato con tutte le mie forze per assicurarmi che CFBundleVersion fosse effettivamente superiore alla versione precedente, aprendo info.plist su un editor di testo, ottenere informazioni sulla destinazione e leggere la versione sulle proprietà, ho chiesto a mia moglie di leggere la versione su iTunes per confermare che non sono stato colpito da un inatteso Alzheimer precedente.

Alla fine, questo in qualche modo ha funzionato. La mia versione precedente era la 1.0.4. Ho provato 1.3.5, 1.4.5 ecc .; nessuno ha funzionato. Ma abbastanza sorprendente, quando sono entrato nella 2.0.0, Application Loader ha apprezzato ciò che ha visto e lo ha caricato. Ciò è dovuto a un bug nel caricatore dell'applicazione?


2

Nel riepilogo degli obiettivi accanto al numero di versione in xcode4 c'è una build, l'ho iniziata da 1, incremento ogni volta che eseguo un caricamento binario, questo ha risolto il problema per me


Questo era anche il mio problema, il messaggio di errore è molto fuorviante!
mj662

Ho avuto anche questo problema. È incredibilmente frustrante che il messaggio sia così fuorviante. Ho sprecato la parte migliore del mio pomeriggio. Grazie per l'utile risposta.
Joel Anair

2

Se l'errore segnalato è CFBundleVersion, la correzione è generalmente piuttosto semplice. Controlla / prova questo:

  1. Vai all'elemento del progetto di livello superiore nel Navigatore progetto e fai clic su di esso.
  2. Nel pannello, fare clic con il pulsante destro del mouse sulla destinazione dell'applicazione.
  3. Fare clic sulla scheda Riepilogo.

Nella scheda Riepilogo vedrai che ci sono due diverse "versioni" che possono essere regolate. Il primo è il campo "Versione", utilizzato nella schermata "Informazioni" predefinita per le app Mac. Quella a destra è la "Versione build". Questo è quello che conta davvero per gli invii di App Store!


2

So che questa è una vecchia domanda, ma mi sono imbattuto in questo problema. L'ho risolto eliminando il progetto dall'archivio, quindi ri-archiviandolo. Apparentemente la versione precedente dell'app era lì dentro e causava confusione.


2

Prestare attenzione al messaggio di errore.

Il messaggio di errore contiene il numero di bundle precedente tra parentesi quadre (ad esempio [9]).

Quindi è necessario incrementare il numero di bundle (es. 9.1), sebbene il numero della nuova versione sia 1.2

Quindi, quando aggiorni la versione da 1.1 a 1.2 in iTunes Connect, devi impostare questi valori nel tuo progetto

Version number = 1.2
Bundle number = [previous bundle number]++

2
NOTA: se non sei sicuro di quale fosse il bundle # per l'ultima versione caricata, fai clic sulla versione precedente e cerca Dettagli binari (sotto Collegamenti). Dovresti vedere "Versione bundle: #"
Nathaniel Blumer

1

Ho un iPhone e una versione iPad nel mio progetto, la lista informazioni per l'ipad non era associata al prodotto ipad per qualche motivo, il controllo dell'appartenenza Target e l'associazione con il prodotto corretto hanno risolto questo problema per me.



1

Ho commesso un errore scambiando la 'Versione' e la 'Build' no.

Invece di mettere il 2.3 nel campo Version, lo metto nella Build no.


1

Ecco come ho risolto il problema (e immagino che questo sia il problema con molte persone):

1) Fare clic sulla scheda generale delle impostazioni del progetto (a cui è possibile accedere facendo clic sul nome del progetto che si trova nella parte superiore di tutti i file di codice).

2) Assicurati che il campo build corrisponda a quello che hai inserito nel tuo plist per la chiave "Bundle Version".

Questo era il problema per me, per qualsiasi motivo non erano sincronizzati. Penso che quando cambi la chiave della versione del bundler dovrebbe sincronizzarsi (e viceversa). Ma non è successo per nessun motivo, potrebbe essere un bug.


1

Ho avuto lo stesso problema ed è successo perché non ho archiviato e stavo usando il primo archivio che ho usato per la 1.0 ma con la 1.0.1. Quindi ho selezionato il dispositivo iOS, archiviato e quindi convalidato. Ta-daaa, ha funzionato!


dovrebbe essere un commento piuttosto che una risposta.
Hello World

0

Ho avuto lo stesso problema. Fondamentalmente la mia versione precedente era la 1.12, volevo cambiarla in 1.2 ma avevo l'errore menzionato. Ho provato 1.20 e ha funzionato perfettamente


Il secondo numero deve essere compreso tra 0 e 9, quindi 12 è "troppo grande"
JOM

1
Il "secondo numero" (permettetemi di chiamarlo numero di versione minore , solo per divertimento) può essere qualsiasi numero intero, non ci sono limiti; quindi 12o 20è il numero di versione minore perfetto .
holex

0

Nessun set di numeri di versione in continuo aumento ha funzionato finché utilizzavo "Application Loader" di Apple per caricare il mio file ipa, ma se utilizzavo "Organizer" di XCode (che si trova sotto il menu a discesa "Window" nella versione 3.2.5) , ho fatto clic sul pulsante "Convalida ...", aspettato che mi approvasse, quindi fai clic sul pulsante "Invia ...", tutto è andato come previsto con un numero di versione corretto (uno che è un singolo incremento sopra quello che è attualmente disponibile sull'app store).


0

in xcode 4.2 sembra non registrare la versione del bundle se si modifica dal file info.plist. Ho impostato la mia nuova versione del bundle direttamente nel pannello di xcode "info" e ora funziona!


0

Ho trovato un'altra soluzione.

Se selezioni il tuo obiettivo >> info >> aggiorna l'ID bundle.


0

Ho avuto lo stesso problema. La prima versione presentata era la 1.5.20 e si voleva aggiornare alla 1.7.30.

Dopo aver provato senza successo le versioni 1.8, 2.0 e 3.0, ho aggiornato il mio CFBundleVersion alla 10.0 e improvvisamente ha funzionato.

Non sono sicuro di quale sia la logica alla base di questo comportamento, ma mi ha fatto perdere circa 2 giorni di lavoro.


0

Controlla la tua versione bundle della versione caricata in precedenza, dovresti dare una versione bundle superiore rispetto alla versione bundle della versione già caricata. La versione già caricata può essere visualizzata da itunesconnect / applicazione / visualizza dettagli / dettagli binari.


0

Ho passato due notti su un problema simile. La mia versione precedente era la 1.02 e ho provato a convalidare con 1.2, 1.20, 1.1 e ho sempre ricevuto il messaggio binario non valido.

L'ho risolto inserendo 2.0 come numero di versione e ha funzionato . Sospetto che anche questo sia un bug. Non ho ricevuto questo messaggio durante l'aggiornamento recente del mio gioco da 1.0 a 1.1, ma era con xcode 3. Grazie per il suggerimento!


0

Ho avuto un problema simile e dopo aver trascorso mezz'ora ho notato che stavo aumentando il numero sbagliato. Invece di aumentare, Bundle versionstavo aumentando Bundleversions, string, shortin Info.plist. Cerca "CFBundleVersion" nel tuo progetto usando CMD + Shift + F. Vedrai che devi aumentare il numero di CFBundleVersion.


0

Prova a cambiare versione = "1.1.1.0" in versione = "1.1.1"


0

Alla fine di ottobre Apple richiede che i numeri di versione siano inferiori a 4 cifre (1.2.3 o 1.23 invece di 1.2.3.4 o 1.234). Questo vale anche per le biblioteche!

Un rapido grep per il numero di versione incriminato nella directory del progetto dovrebbe far apparire la libreria incriminata:

grep -r "1.2.3.4" .


0

Avevo una beta attiva di TestFlight in esecuzione. Build 2020 , versione 407

Ho inviato un'app per la revisione ufficiale dell'App Store. Build 2020 , versione 435, ed è stata approvata. È solo seduto lì, in attesa che lo pubblichi in diretta nell'App Store.

Senza aggiungere una complicata storia secondaria, quello che volevo fare era offrire ai miei utenti beta di TestFlight una versione aggiornata per visualizzare in anteprima la versione ufficiale dell'App Store per alcuni giorni, prima di rendere live la versione dell'App Store. Perchè lo chiedi? Poiché stavano ottenendo funzionalità gratuite, stavano per costare denaro una volta che l'app sarebbe stata pubblicata.

Quindi, ho presentato la Build 2020 , versione 436, a TestFlight, ed è stata rifiutata.

È stato rifiutato perché ho un candidato ufficiale App Store approvato con lo stesso numero di build

Soluzione: modifica il numero di build della tua versione di TestFlight. Ho presentato la build 20200 (ho aggiunto uno zero extra) versione 436 a TestFlight ed è stata approvata. Non preoccuparti, puoi comunque inviare questa build allo stesso gruppo beta di TestFlight, purché tu stia ancora utilizzando lo stesso BundleID.

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.