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.


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.

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.


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


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


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

@ Timuçin. Desculpe pelo atraso na resposta, você está certo é: armv7 armv7s arm64.
Leonel Folmer


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


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


1

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

(Arquivado com dispositivo real)


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!


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.