CFBundleVersion no erro de upload Info.plist

108

"O binário que você carregou é inválido. A chave CFBundleVersion no arquivo Info.plist deve conter uma versão superior à da versão carregada anteriormente."

Estou recebendo este erro quando começo a fazer o upload do meu aplicativo.

Eu configurei a versão atualizada para 1.2 no iTunes Connect e também atualizei o .plistarquivo para 1.2.

Não entendo por que estou recebendo esse erro. Qualquer ajuda seria apreciada. Obrigado.

Adam H
fonte
Por que não tentar configurá-lo para, digamos, 1.2.1?
Nikita Rybak
Tentei muitas combinações. Nenhum funciona. Esse erro continua surgindo.
Adam H
1
E qual é a versão enviada anteriormente (conforme encontrada no Info.plist do aplicativo de envio atualmente)?
Costique
Você resolveu esse problema? O mesmo problema aconteceu comigo de repente. Isso é frustante.
Wayne Lo,
Acabei de receber um e-mail com este erro e descobri que uma das minhas compilações antigas, que estava travada no ITC como "em processamento" na semana anterior, foi finalmente processada. Quando travou pela primeira vez, reenviei outra compilação com um número de compilação incrementado, portanto, quando a mais antiga finalmente foi processada, o erro foi disparado.
blwinters

Respostas:

210

Há pelo menos um bug conhecido no servidor de upload da Apple que não foi corrigido por mais de 12 meses. Coisas a serem observadas:

  1. A Apple exclui todos os zeros à esquerda dentro do número da versão; ou seja, a "string inteira" NÃO é tratada como um número, em vez disso, os bits entre os pontos são tratados como números SEPARADOS. por exemplo, "1.02" é tratado pela Apple como "1.2". Portanto, para Apple, 1.02 é MAIOR QUE 1.1
  2. A Apple às vezes fica "confusa" e parece comparar seu aplicativo carregado com a versão de um aplicativo DIFERENTE que você carregou anteriormente. Aconteceu com muitas pessoas e eu mesma vi algumas vezes
  3. A Apple deve estar comparando o "CFBundleVersion" (ou seja, "Versão do pacote" e não a "string de versões do pacote, abreviada"); não se confunda.
  4. Freqüentemente, a única solução viável é aumentar o número da frente (por exemplo, o "2" em "2,4" - aumentá-lo para "3")
  5. O número da versão que você carrega não está relacionado ao número da versão que aparece no iTunes - você pode colocar o que quiser lá, e é isso que seus usuários verão
  6. ... exceto, se você também relatar o número da versão "real" dentro de seu aplicativo, o usuário verá o CFBundleVersion (geralmente, depende de como você o codifica), em vez da versão do iTunes (que - eu acho - não pode ser acessada de dentro do seu aplicativo)
Adão
fonte
1
CFBundleVersion é o que no xcode 4.5 é rotulado como "Build" e NÃO "Version"! A versão acaba sendo identificada como "CFBundleShortVersionString" no arquivo Info.plist. Portanto, você realmente precisa fornecer um valor mais alto para o Build do que antes.
RickJansen
1 Útil. Eu usei 1.02para minha versão anterior. E corrija usando esta resposta. Obrigado.
Praveenkumar
Essa resposta deve ser adicionada na FAQseção sobre como enviar um aplicativo para a app store. :))
danypata
@Adam: Conforme li, CFBundleShortVersionStringe o número da versão que você forneceu no iTunes Connect devem corresponder. Isso significa que se você mostrar o número da sua versão no aplicativo que você usa CFBundleShortVersionString. O CFBundleVersiontambém deve ser aumentado e é o que a Apple usa para determinar se você está enviando uma versão atualizada do seu aplicativo.
teste em
A Apple redefiniu recentemente o que todas as suas strings significam, de uma forma NÃO compatível com as versões anteriores.
Adam
28

Atualize o número da compilação. O número da versão é importante, mas o número da compilação faz toda a diferença. Por exemplo, eu tinha minha versão inicial de um aplicativo como:

version #: 1.0
build #:   1.0

No entanto, quando tentei fazer o upload da próxima versão, ou seja,

version #: 1.1
build #:   1.0

Não aceitaria o upload. Simplesmente incrementando o build # para 1.1 o upload foi aceito.

O chimpanzé louco
fonte
Perfeito ... mudar a construção # funcionou para mim, o que é ótimo, pois eu realmente queria manter minha versão do pacote e a versão do iTunes sincronizadas.
Aaron Hayman
9

O Xcode 4 pensará que você deseja reenviar a mesma versão se não re-arquivar o aplicativo. Mesmo se você alterar a versão do pacote e reconstruir, o upload falhará. Lembre-se de fazer um " Arquivo " no menu Produto!

Patrice Gagnon
fonte
7

Muitas das respostas aqui, em última análise, me ajudaram, mas não foi até que eu vi o número exato da "versão" que a Apple estava comparando.

  1. Vá para iTunes Connect -> Gerenciar seus aplicativos
  2. Escolha o aplicativo para o qual deseja verificar a versão anterior
  3. Clique no botão azul rotulado Ver Detalhes
  4. Clique no link denominado Detalhes Binários
  5. Encontre o valor fornecido para a versão do pacote

Embora eu achasse que tinha enviado a versão número 1.0.1, o número real que a Apple armazenou era 101. Alguns dos comentários acima me fizeram acreditar que eu precisava mudar minha versão para 2.0 (20) ou 1.5 (15) ou 1.2 (12 ) —Estes são menos de 101, como você pode ver. Atualizar minha versão número 102 (sem os pontos) corrigiu o problema.

Kyle Hayes
fonte
6

Este artigo aponta que o número da versão conforme visto na app-store não é necessariamente o mesmo que o número da versão do pacote. Quando você visualiza os detalhes do seu aplicativo no iTunes, há um link chamado 'Detalhes binários'. Essa página mostra a versão do pacote. Um dos aplicativos em que eu estava trabalhando estava na versão 1.0, mas sua versão em pacote era 2.0. O upload de um pacote com a versão 1.1 falhou, mas 2.1 funcionou.

Portanto, há uma versão do aplicativo e uma versão do pacote. Esse problema tem a ver com a versão do pacote.

Pieter Witvoet
fonte
5

Parece que a confusão é causada pelo formato do número. A versão do pacote não é decimal. É uma versão (ou construção talvez), então 1.11 é na verdade "um vírgula onze". Portanto, 1,11 é maior que 1,2. Tive sucesso usando 1.20 neste caso.

Gavin
fonte
4

Normalmente, isso pode ser causado devido à ausência do número da versão. Portanto, adicione o número da versão em Identidade e verifique também o número da versão.

insira a descrição da imagem aqui

Continue codificando ......... :)

Krishna Raj Salim
fonte
3

Para mim (Xcode 4.5), alterar o número da compilação resolveu o problema. defina as versões para 1.0.2 ... 2.0.2 etc. e aumente o build # (Adam 3 point dê-me uma ideia onde procurar).

setdvd
fonte
2

Você deve conseguir fazer login no iTunes Connect e ver a versão atual do aplicativo (incluindo as que você enviou, mas não está ao vivo). Certifique-se de que não enviou anteriormente uma versão com um número de versão superior (ou igual).

Danny Tuppeny
fonte
Isso é enganoso; A Apple NÃO se compara simplesmente à versão iTunesConnect. Consulte a resposta de Pieter abaixo para uma resposta mais precisa.
Adam
@Adam A partir de agora (2014-05), a Apple realmente compara os números da versão interna do seu aplicativo iOS com o número da versão iTunesConnect. Se houver incompatibilidade, você receberá esta mensagem de aviso (não é um erro): 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'].Mas essa comparação iTunesConnect não é a causa do problema nesta questão. A comparação iTunesConnect é um mero aviso, não um erro de interrupção da exibição.
Basil Bourque
2

Passei algumas horas tentando resolver esse problema. Eu verifiquei com todas as minhas forças para garantir que o CFBundleVersion era realmente superior à versão anterior, abrindo o info.plist em um editor de texto, obter informações do destino e ler a versão nas propriedades, pedi à minha esposa para ler a versão no iTunes para confirmar que não fui atingido por um Alzheimer anterior inesperado.

No final, isso de alguma forma funcionou. Minha versão mais antiga era 1.0.4. Tentei 1.3.5, 1.4.5 etc .; nenhum funcionou. Mas, surpreendentemente, quando entrei no 2.0.0, o Application Loader gostou do que viu e fez o upload. Isso é devido a um bug no Application Loader?

Wayne Lo
fonte
2

No resumo de destinos próximo ao número da versão em xcode4 está uma compilação, comecei em 1, eu incremento cada vez que faço um upload binário, isso resolveu o problema para mim

Machado
fonte
Esse era o meu problema também, a mensagem de erro é muito enganosa!
mj662
Eu também tive esse problema. É extremamente frustrante que a mensagem seja tão enganosa. Perdi a maior parte da minha tarde. Obrigado pela resposta útil.
Joel Anair
2

Se o erro relatado for o CFBundleVersion, a correção geralmente é muito fácil. Verifique / experimente isto:

  1. Vá para o item de projeto de nível superior no Navegador de Projetos e clique nele.
  2. No painel, clique com o botão direito no destino do aplicativo.
  3. Clique na guia de resumo.

Na guia de resumo, você verá que existem duas "versões" diferentes que podem ser ajustadas. O primeiro é o campo "Versão", que é usado na tela "Sobre" padrão para aplicativos Mac. O que está à direita é a "Versão Build". Este é o que realmente importa para os envios da App Store!

David Hoelzer
fonte
2

Sei que essa é uma pergunta antiga, mas acabei de me deparar com esse problema. Eu resolvi isso excluindo o projeto do arquivo e, em seguida, arquivando-o novamente. Aparentemente, a versão anterior do aplicativo estava lá e causando confusão.

Henry F
fonte
2

Preste atenção à mensagem de erro.

A mensagem de erro contém o número do pacote anterior entre colchetes (por exemplo, [9]).

Portanto, você precisa incrementar esse número de pacote (por exemplo, 9.1), embora seu novo número de versão seja 1.2

Então, quando você atualiza a versão de 1.1 para 1.2 no iTunes Connect, você precisa definir esses valores em seu projeto

Version number = 1.2
Bundle number = [previous bundle number]++
Serge Seletskyy
fonte
2
NOTA: se você não tem certeza de qual era o nº do pacote da última versão carregada, clique na versão mais antiga e procure por Detalhes Binários (em Links). Você deve ver "Versão do pacote: #"
Nathaniel Blumer
1

Eu tenho uma versão para iPhone e iPad em meu projeto, o infoplist do ipad não estava associado ao produto ipad por algum motivo. Verificar a associação do Target e associá-lo ao produto correto resolveu esse problema para mim.

Jay Adams
fonte
1

Eu cometi um erro ao trocar a 'Versão' e o 'Construir' no.

Em vez de colocar 2.3 no campo Versão, coloquei no Build no.

Pritesh Desai
fonte
1

Veja como resolvi o problema (e acho que esse é o problema de muitas pessoas):

1) Clique na guia geral das configurações do seu projeto (que pode ser acessada clicando no nome do seu projeto que está no topo de todos os arquivos de código).

2) Certifique-se de que o campo de construção corresponda ao que você colocou em sua plist para a chave "Versão do pacote".

Esse era o problema para mim, por algum motivo eles estavam fora de sincronia. Acho que quando você altera a chave da versão do Bundler, é suposto sincronizar (e vice-versa). Mas não aconteceu por qualquer motivo - pode ser um bug.

Ser Pounce
fonte
1

Tive o mesmo problema e aconteceu porque não arquivei e estava usando o primeiro arquivo que usei para o 1.0 mas com o 1.0.1. Então, selecionei o dispositivo iOS, arquivei e validei. Ta-daaa, funcionou!

Gonzo345
fonte
deve ser um comentário em vez de uma resposta.
Hello World
0

Eu tive o mesmo problema. Basicamente, minha versão anterior era 1.12. Eu queria mudá-la para 1.2, mas tive o erro mencionado. Eu tentei 1.20 e funcionou perfeitamente

mukaissi
fonte
O segundo número deve estar entre 0 e 9, então 12 é "muito grande"
JOM
1
O "segundo número" (deixe-me chamá-lo de número da versão secundária , só por diversão) pode ser qualquer número inteiro, não há limites para ele; portanto, 12ou 20é um número de versão secundária perfeito .
holex
0

Nenhum conjunto de números de versão sempre crescentes funcionou enquanto eu estava usando o "Application Loader" da Apple para carregar meu arquivo ipa, mas se eu usasse o "Organizer" do XCode (encontrado no menu suspenso "Window" na versão 3.2.5) , cliquei no botão "Validar ...", esperei que ele me aprovasse, depois clique no botão "Enviar ...", tudo correu como esperado com um número de versão lógico (um que é um único incremento acima do que está atualmente disponível na loja de aplicativos).

ideasuns
fonte
0

no xcode 4.2 parece não registrar a versão do pacote se você modificar do arquivo info.plist. Eu configurei minha nova versão do pacote diretamente no painel "info" do xcode e agora funciona!

Marco Allori
fonte
0

Encontrei outra solução.

Se você selecionar seu destino >> informações >> atualize o ID do pacote.

Michael
fonte
0

Eu tive o mesmo problema. A primeira versão enviada foi 1.5.20 e queria atualizar para 1.7.30.

Depois de tentar as versões 1.8, 2.0 e 3.0 sem sucesso, atualizei meu CFBundleVersion para 10.0 e de repente funcionou.

Não tenho certeza de qual é a lógica por trás desse comportamento, mas me fez perder cerca de 2 dias de trabalho.

BastiBen
fonte
0

Verifique sua versão do pacote da versão carregada anteriormente, você deve fornecer uma versão do pacote superior em comparação com a versão do pacote da versão já carregada. A versão já carregada pode ser vista por itunesconnect / aplicativo / ver detalhes / detalhes binários.

Vishnu R Kaimal
fonte
0

Passei duas noites em um assunto semelhante. Minha versão anterior era 1.02 e tentei validar com 1.2, 1.20, 1.1 e sempre recebi a mensagem binária inválida.

Resolvi inserindo 2.0 como o número da versão e funcionou . Suspeito que isso também seja um bug. Não recebi essa mensagem quando atualizei meu jogo recentemente de 1.0 para 1.1, mas foi com o xcode 3. Obrigado pela dica!

machineboy
fonte
0

Tive problema semelhante e depois de passar meia hora notei que estava aumentando o número errado. Em vez de aumentar, Bundle versionfui aumentando Bundleversions, string, shortno Info.plist. Pesquise "CFBundleVersion" em seu projeto usando CMD + Shift + F. Você verá que precisa aumentar o número de CFBundleVersion.

Josip B.
fonte
0

Tente alterar a versão = "1.1.1.0" para a versão = "1.1.1"

RouR
fonte
0

No final de outubro, a Apple exige que os números de versão tenham menos de 4 dígitos (1.2.3 ou 1.23 em oposição a 1.2.3.4 ou 1.234). Isso também se aplica às bibliotecas!

Um grep rápido para o número da versão ofensiva no diretório do projeto deve ativar a biblioteca ofensiva:

grep -r "1.2.3.4" .

Warpling
fonte
0

Eu tinha um testFlight beta ativo em execução. Build 2020 , versão 407

Enviei um aplicativo para análise oficial da App Store. Compile 2020 , versão 435, e foi aprovado. Ele está sentado lá, esperando que eu coloque-o ao vivo na App Store.

Sem adicionar uma história secundária complicada, o que eu queria fazer é dar aos meus usuários do TestFlight beta uma versão atualizada para ver a versão oficial da App Store por alguns dias, antes de colocar a versão da App Store no ar. Porque você pergunta? Como estavam obtendo recursos gratuitos, custaria dinheiro quando o aplicativo fosse lançado.

Então, eu enviei Build 2020 , versão 436, para TestFlight, e ele foi rejeitado.

Foi rejeitado porque eu tenho um candidato oficial da App-Store aprovado com o mesmo número de compilação

Solução: altere o número da compilação de sua versão do TestFlight. Enviei o Build 20200 (acrescentei um zero extra) versão 436 para o TestFlight e ele foi aprovado. Não se preocupe, você ainda pode enviar esta compilação para o mesmo grupo TestFlight beta, contanto que ainda esteja usando o mesmo BundleID.

Jungledev
fonte