Envio de aplicativo iOS: falta de suporte de 64 bits

91

Enviei um app ontem para revisão, sem problemas. Então percebi que tinha uma pequena correção a fazer (alterar o nível máximo de zoom de um mapa de 19 para 18, nada mais), então removi o binário do iTunes Connect e tentei reenviar.

Agora estou tendo este aviso:

warning_xcode

Não entendo por que, pois minhas arquiteturas são:

  • arquiteturas: armv7
  • arquiteturas válidas: armv6, armv7, armv7s, arm64

O aplicativo funciona bem no simulador. Se eu tentar usar as arquiteturas padrão (armv7, arm64) conforme recomendado no aviso, o aplicativo não será compilado e eu obtenho:

  • Símbolos indefinidos para arquitetura x86_64
  • ld: símbolo (s) não encontrado (s) para arquitetura x86_64

Estou usando a lib route-me e defino as mesmas configurações de arquitetura.

Tim Autin
fonte
Nós também temos esse problema. :(
Azik Abdullah
Também desde ontem?
Tim Autin
1) tente limpar DerivedData para Xcode depois de alterar isso; 2) talvez você esteja usando uma API externa mais antiga, sdk, estrutura, etc
TonyMkenu
@Tim Você conseguiu consertar isso? você pode postar uma solução para isso?
user2056563
Olá, desculpe, não encontrei a solução e não estou mais trabalhando neste projeto. Por enquanto é apenas um aviso, então pude enviar o aplicativo.
Tim Autin

Respostas:

106

Use " Standard architectures" assim:

  • Arquitetura: "Arquiteturas padrão" arm7, arm64
  • Arquiteturas válidas: " arm64 ", armv7 ...
  • Construir apenas arquitetura ativa - NÃO (especialmente ... se o seu dispositivo conectado não for compatível com arm64)

como isso:

insira a descrição da imagem aqui

  • Além disso, sabe-se que desligar iphones e ipads do mac ajuda, especialmente se forem versões de 32 bits.
TonyMkenu
fonte
2
Obrigado pela sua resposta, mas como afirmado na minha pergunta eu já tentei isso, e o projeto não compila com essas configurações: /
Tim Autin
3
@Tim, sim eu também tive armv7 and arm64em Architechtures. Ainda assim, o aviso de suporte de 64 bits ausente ocorre durante a validação do aplicativo para envio.
Azik Abdullah
@NAZIK você tem arm64 em ambas as linhas (arquiteturas e arquiteturas válidas)? Eu tive o mesmo erro e esta foi a solução
TonyMkenu
@Tim tente limpar seu DerivedData e verifique seu framework externo ou SDK mais recente se eles têm suporte de 64 bits
TonyMkenu
3
Além disso, certifique-se de que seu dispositivo NÃO esteja conectado ao arquivar a compilação final. Veja @powertoold a resposta abaixo ( stackoverflow.com/a/26848865/1715004 )
Filipe Borges
68

Depois de confirmar as arquiteturas corretas, certifique-se de que seu dispositivo NÃO esteja conectado ao seu computador ao ARQUIVAR a construção final para enviar para a App Store.

O motivo desse aviso aparecer é porque o DEVICE que você conectou provavelmente não é compatível com arm64.

powertoold
fonte
4
Tirem o chapéu! : D você salvou meu tempo
Vaibhav Limbani
1
Grande ajuda !! Me economizou muito tempo com isso. Boa dica para atualizar aplicativos antigos.
harry
Acredito que você possa manter seus dispositivos de não 64 bits conectados se alterar a configuração de compilação Build Active Architecture Onlypara No. Isso forçará o xcode a construir o binário de 64 bits, independentemente de qual dispositivo está conectado.
jxmallett
3
Além da resposta de @jxmallett, certifique-se de que seu arquivo de configuração do Scheme esteja definido como Release, no qual o Build Active Architectureestá definido como No. Definir esquema de arquivo
KarenAnne
1
Para sua informação, tive que desconectar meu dispositivo, alternar para o simulador e, em seguida, voltar para "Dispositivo iOS" para que isso funcionasse.
nwkeeley 01 de
37

Como Tony escreveu, é importante ter em ambas as linhas essas configurações. Uma vez que meu (e obviamente seu) projeto foi criado ainda antes de arm64 ser adicionado ao padrão, ele não é refletido em "Arquiteturas Válidas", mesmo que seja mostrado como Padrão.

O que eu fiz:

  • Eu fui para a configuração do projeto (vs. destino)
  • Digitado "arm64" nas arquiteturas válidas (é automaticamente refletido nos destinos e esquemas

Depois de limpar / construir, recebo até mesmo alguns avisos sobre a conversão inadequada de float em CGFloat, etc., portanto, as configurações obviamente aplicadas.

O aviso de validação também desapareceu!

insira a descrição da imagem aqui

Nick Entin
fonte
1
> não refletido em "Arquiteturas válidas", mesmo que seja mostrado como padrão. Esse foi o ponto para mim. THX!
Romain
1
Caso isso ajude outras pessoas, eu tive que mudar tanto no Projeto quanto na Meta para começar a trabalhar
djburdick
@djburdick Obrigado. Isso funcionou para mim quando nada mais funcionou.
Dave Chambers
27

Desconecte seu dispositivo físico do Mac. No XCode na lista de dispositivos, escolha Dispositivo iOS e crie o arquivo novamente. Funcionou para mim

hrast
fonte
5

Hoje resolvo esse problema com as seguintes etapas:

Configurações de construção:

Arquiteturas: arquiteturas padrão (arm7, arm64) - $ (ARCH_STANDARD)

Arquiteturas válidas: armv7 armv7s arm64

  1. Limpe e crie seu aplicativo com o iPhone conectado
  2. Desconecte seu iPhone e verifique se a barra superior está em "Dispositivo iOS"
  3. Arquivo
  4. Validar e enviar
Leonel Folmer
fonte
@ Timuçin. Desculpe pelo atraso na resposta, você está certo é: armv7 armv7s arm64.
Leonel Folmer
3

Basta criar um novo projeto usando a versão mais recente do xCode e encontrar as configurações de Build. O novo projeto criado usando a versão mais recente tem suporte 64 por padrão.

insira a descrição da imagem aqui

Kirit Vaghela
fonte
menos de 2% das pessoas usam iOS 6 ou menos. developer.apple.com/support/appstore
Kirit Vaghela
2

Ok, isso foi uma loucura. Tentei todas as respostas. Mas funcionou apenas quando coloquei arm64antes armv7e armv7snas arquiteturas válidas.

PS: xcode version : 7.2

prad
fonte
1
Sim. só então e somente depois de conectar um dispositivo o registro real de erros foi mostrado. Em seguida, algumas linhas de código que estão obsoletas e requereram conserto (vermelho) e alguns problemas com a lib RSA apareceram.
maxweber
1

Resolvi o problema mudando,

Arquiteturas: arm7, arm64

Arquitetura válida: arm7, arm64

Construir apenas arquitetura ativa: Sim

user3616535
fonte
1

Enviei sucesso por config como a imagem: insira a descrição da imagem aqui

(Arquivado com dispositivo real)

Bkillnest
fonte
1
Deve definir o modo de liberação para não
ZYiOS
1

Livre-se de todos os avisos. Repassou tudo indefinidamente. Encontrou a resposta de uma palavra aqui acima.

"Construir apenas arquitetura ativa - NÃO (especialmente ... se o dispositivo conectado não for compatível com arm64)"

Meu iPad não é de 64 bits. Coloque NO para Build Active Architecture e meu envio funcionou!

Homem da montanha
fonte
0

Altere seu destino de desenvolvimento iOS para pelo menos 5.1.1 ou, como alternativa, exclua a configuração de arquiteturas padrão e reaplique-a. Você pode ter visto um aviso de que arm64 não é compatível com seu destino de construção. Na página de visão geral, verifique as configurações de build e destino de "destino de implantação". No meu caso, a meta era 6,0, mas o projeto era 5,0.

Além disso, verifique "Arquiteturas válidas" em seu destino e em seu projeto. Eu tinha as configurações certas no projeto, mas não no destino. Depois disso, funcionou para mim.

Alterne entre projeto / destino na página de visão geral no canto superior esquerdo da caixa.

user1122069
fonte
Você realmente quer dizer 5.1.1? 5.1 não é recente o suficiente?
Dirk
Faz muito tempo. Eu não sei ou me lembro da lógica disso. Basta seguir os passos e algo pode voltar ao seu devido lugar. Brinque com as arquiteturas e todas as páginas mencionadas.
user1122069
0

Marque a opção Construir Arquitetura Ativa. Defina como NÃO. Funciona para mim.

PRITAM SATPUTE
fonte