“Aviso: os aplicativos do iPhone devem incluir uma arquitetura armv6” mesmo com o conjunto de configurações de compilação

332

Já faz um tempo desde que tive que ajustar as configurações de compilação do projeto. Após a atualização para um SDK recente, estou com problemas para criar minha configuração de distribuição ad hoc.

O Build gera este aviso e erro:

aviso: os aplicativos do iPhone devem incluir uma arquitetura armv6 (ARCHS atual = "armv7")

iPhone / iPod Touch: o executável do aplicativo está ausente na arquitetura necessária. Pelo menos uma das seguintes arquiteturas deve estar presente: armv6 (-19033)

No entanto, no meu projeto, pensei que tinha as coisas definidas corretamente:

  • As arquiteturas são: Padrão (armv6 armv7)
  • SDK base: iOS mais recente (atualmente definido como iOS 4.2)
  • Arquiteturas válidas: armv6 armv7

texto alternativo

Limpei todos os alvos.

Agradeço qualquer dica.

usuario
fonte
O Mine era um aplicativo antigo que recebeu uma atualização e gera o mesmo erro para o iOS Deployment Target <4.3 também! Portanto, minha solução foi remover todas as referências ao armv6 e configurá-lo para> = 4.3. Funcionou.
Henrik Erlandsson
E agora eu tentei o mesmo para outro aplicativo antigo que foi revisado e não funcionou ... Problema no XCode 5, ele interpreta mal as Configurações de Compilação, ao que parece.
Henrik Erlandsson

Respostas:

418

Se você estiver usando o Xcode 4.2 ou superior, tente o seguinte:

  1. Clique no nome do seu projeto (na coluna esquerda), seguido pelo destino:

    insira a descrição da imagem aqui

  2. Clique na guia 'Build Settings' (na coluna da direita):

    insira a descrição da imagem aqui

  3. Clique na linha 'Release' ou 'Distribution' em 'Architectures' e escolha 'Other ...':

    insira a descrição da imagem aqui

  4. Clique duas vezes na linha destacada denominada '$ (ARCHS_STANDARD_32_BIT)' na janela pop-up exibida e substitua-a, digitando 'armv6'. Em seguida, adicione uma nova linha com o botão de adição na parte inferior esquerda do popover e digite 'armv7' e clique em Concluído:

    insira a descrição da imagem aqui

Atualização: você deve adicionar armv7s para atingir o iPhone 5 também. (E solte o armv6 se estiver construindo com o Xcode 4.5 ou superior, que não suporta mais o armv6.)

É isso aí. Agora você deve conseguir construir / arquivar sem gerar erros.

Se ainda assim não funcionar, consulte esta resposta da justinxreese , que sugere adicionar entradas para armv6 e armv7 em "Recursos necessários do dispositivo" no seu arquivo info.plist.

usuario
fonte
3
Sim, parece que a Apple está se afastando do ARM6, então isso parece ser uma etapa necessária para o Xcode 4.2. É estranho que o processo de submissão ainda requer uma compilação ARM6, embora 4.2 agora é público ...
Jasarien
7
Eu não tenho linha de distribuição sob arquitetura, em vez disso, tenho a linha "Release". não sei como fazê-lo
OMGPOP 15/10
2
@ Let'sSpotIt Basta adicionar armv6 e armv7 à sua linha de lançamento. O projeto nas minhas capturas de tela foi importado de uma versão anterior do Xcode, daí os diferentes nomes da arquitetura.
Nick
2
Obrigado Nick. Além disso, novos projetos criados no Xcode 4.2 podem precisar ter seu arquivo info.plist alterado para suportar dispositivos armv6. Veja minha resposta adicional abaixo.
MattyG
1
@ Nick obrigado pela dica, e para mim eu tive que selecionar o "Projeto" em vez de "Alvo". selecionar as configurações de compilação "Alvo" não funcionou para mim. de qualquer forma obrigado novamente pela ajuda.
Prasad De Zoysa
62

Se você desmarcar a opção "Criar somente arquitetura ativa", ele criará todas as arquiteturas válidas.

Atualização : isso não é mais aplicável a partir do Xcode 4 - siga as instruções de Nick para o Xcode 4 e posterior.

Brian
fonte
11
Você pode acelerar o tempo de criação definindo YES para versões de depuração e Não na versão.
Billy Gray
59

Eu tive esse problema mesmo depois de seguir a resposta aceita e achei o seguinte funcionando:

No seu Info.plist, adicione uma entrada para os Recursos de dispositivo necessários. Deve ser uma matriz e terá duas entradas.

  • Item 0: armv6
  • Item 1: armv7

Isso parecerá assim:

Entrada necessária dos recursos do dispositivo

justinxreese
fonte
Esta solução fixo meus outros avisos arquitetura, mas eu ainda obter o inicial, e eu também tenho "Construir arquitetura ativo Only" definido como "não"
Dan F
corrigi-o para mim, pois a solução anterior não se aplicava. Por algum programa does't razão ARMv6 sob minhas configurações de arquitetura de construção mais: S
seeafish
Isso, juntamente com a resposta de nick acima, o corrigiu para mim. 1
Saurabh Wadhwa
Você deve remover esta opção nas versões mais recentes do xCode para compilar. Quando você colocar os dois em seguida, ela vai exigir tanto arcitectures de ser válido em seu dispositivo que é praticamente impossível
Artem
Para criar com o XCode 4.5+, você precisará remover o armv6 dos recursos necessários do dispositivo.
Pulkit Goyal
26

Além da resposta de Nick sobre o Xcode 4.2, você também pode precisar revisar seu arquivo info.plist. Parece que novos projetos iniciados no Xcode 4.2, por padrão, especificam 'armv7' em 'Recursos necessários do dispositivo'. Você precisará removê-lo se desejar oferecer suporte a dispositivos que executam o armv6 (por exemplo, o iPhone 3G).

insira a descrição da imagem aqui

Exclua armv7 dos 'Recursos necessários do dispositivo' em yourProjectName-Info.plist

MattyG
fonte
21

Uma atualização do ios 6

Alterações no Xcode 4.5.x para ios 6

  1. O Xcode 4.5.x (e posterior) não suporta a geração de binários armv6.
  2. Agora inclui suporte para iPhone 5 / armv7s.
  3. O destino de implantação mínimo suportado com o Xcode 4.5.x ou posterior é o iOS 4.3.
Animesh
fonte
6

Eu tive esse problema também. Acabei de definir meu destino de implantação para 4.3 e deixei apenas a arquitetura armv7 e funcionou. No ponto quase todo mundo tem 5, então 4,3 está bem.

Tom Kincaid
fonte
3

para mim, não funciona com todas as respostas. mas tento TARGETS> Architectures> Debug e adiciono uma nova linha com o botão plus, digite 'armv6' (with out ') e clique em Concluído.

e, finalmente, CMD + B e clique com o botão direito do mouse em PrjectName.app (na pasta Produtos)> Abrir no Finder> Compactar "PROJECT_NAME.APP" (em Debug-iphoneos)> Carregar na AppStore

insira a descrição da imagem aqui

é a minha configuração de tela. insira a descrição da imagem aqui

Se você incluir o projeto, configure tudo. Espero sua ajuda.

mr.octobor
fonte
1
Além disso, tive que definir o armv6 na arquitetura de lançamento antes que funcionasse.
mph
3

Depois de tentar uma mistura dessas respostas, finalmente tropecei em fazê-lo funcionar. Estou tão chateado com a Apple agora. Apenas mais uma hora eles me fizeram perder. Aqui está a minha configuração.

insira a descrição da imagem aqui

Louie
fonte
2

Eu tentei todas as respostas acima, nenhuma resolveu minha pergunta. Então, crio um novo projeto e difito as configurações de compilação, uma por uma. Somente "Arquivos de permissões alternativas" é diferente. A construção do projeto falhou tem um valor armv7. Exclua-o e limpe-> build-> archive. Succeed! A esperança pode resolver sua pergunta

mbo
fonte
2

Uau, eu atualizo / envio aplicativos a cada 6 meses. Toda vez que faço isso, tenho que aprender a "nova" maneira de fazer isso ...

Os mesmos problemas descritos acima ao executar o iOS 5.1 e o Xcode 4.3.2

Obrigado pelas postagens! Passei um tempo atualizando todas as configurações do projeto para armv6, armv7, mas sem alegria. Quando defino "construir somente arquitetura ativa" como Não, recebi um erro de construção ao colocar os dois objetos no mesmo diretório.

Felizmente, notei que vocês estavam modificando as configurações de criação de destino. Foi o que finalmente funcionou (armv6, armv7 e a configuração "construir somente a arquitetura ativa" como Não nas configurações de construção de destino). Como isenção de responsabilidade, eu já havia definido todas as arquiteturas para armv6, armv7 nas configurações do projeto.

De qualquer forma, obrigado pela ajuda, Brent

Brent
fonte
2

Eu tinha que ter certeza de alterar essas configurações nas configurações de Destino e Projeto no xCode 4.3.2 depois de fazer isso e configurá-lo para criar tanto para o armv6 quanto para o armv7 em todos os lugares em que pude enviar meu aplicativo.

Por medida de segurança, também saí do xCode entre fazer as alterações e realizar um ciclo de criação, criação e arquivamento limpo.

pwbrewer
fonte
0

Um problema bastante doloroso para mim também. Passei cerca de uma hora tentando construir e reconstruir - sem alegria. No final, eu tive que fazer isso:

  1. Atualize o SDK base para o mais recente (no meu caso, iOS 5)
  2. Reinicie o xCode
  3. Limpar e construir
  4. Funcionou!

Eu acho que é um monte de jargões sobre arm6, arm7, pois parecia que meu projeto era válido para ambos, pelo menos as configurações pareciam dizer isso), meu palpite é que essa é uma maneira cínica de nos enganar com os aspectos técnicos, que não usamos entendemos, então escolhemos a opção mais fácil e segmentamos o iOS mais recente (bom para a Apple, com mais pessoas atualizando) ....

dijipiji
fonte
0

Aqui está a documentação da Apple:

Perguntas e Respostas Técnicas QA1760

Diz que há duas coisas que você deve acertar:

  1. Adicionar armv6 às configurações de construção da arquitetura
  2. Defina Construir Arquitetura Ativa Apenas como No.

Se isso ainda não o ajudar, verifique se realmente está alterando as configurações de arquitetura para a configuração correta - perdi meia hora mexendo com a errada e me perguntando por que não funcionou ...

Selecione Edit Scheme...no menu Produto, clique no esquema "Arquivar" na lista à esquerda e verifique a Configuração da compilação. Mude o valor se não era o que você esperava.

Rolf Staflin
fonte
0

Nota; Eu tive que executar essas etapas para o meu projeto base e para o arquivo PhoneGap .xcodeproj incorporado no meu aplicativo.

Sim, incorporei o PhoneGap; eles são atualizados com muita frequência e tenho menos de dois meses para saber que um recurso foi depreciado.

James Perih
fonte
0

Tente alterar seu destino de implantação para algo maior que um processador armv6. As configurações do xCode referenciam o nível do sistema operacional, por exemplo: Versão iOS {{3.1, 3.2, 4.0, 4.1, 4.2, 4.3, 5.0, 5.1}

(i) Você pode definir isso na guia de configurações de compilação ou na guia de resumo. Comece no canto superior esquerdo da janela no Project Navigator, com todos os arquivos listados nele. Clique no ícone mais alto que possui um ícone azul.

(ii) Se você planeja usar o circuito programável da linha de sombreador, que é acessado e controlado por meio da API openGL ES 2.0, defina sua "Versão de implantação" para cerca de 4,3, que acredito estar disponível apenas em dispositivos como o 3GS ou mais recente. O xCode está relatando que o iOS 4.2.5 ou superior é necessário para executar o código armv7. E mais uma vez, acredito que este processador começou com o 3GS. * O iOS 4.3 parece ser a escolha para mim, por enquanto.

http://theiphonewiki.com/wiki/index.php?title=Armv7

http://en.wikipedia.org/wiki/List_of_iOS_devices

Marc Clint Dion
fonte
0

Se o xCode continuar reclamando do armv7, desconecte qualquer dispositivo de conexão (especialmente o iPhone 5 !!) e tente novamente. Levei horas para descobrir esse pedacinho de informação.

refaelio
fonte
0

Usando o Xcode 4.2 no Snow Leopard, usei as seguintes configurações para criar um aplicativo que funcionasse tanto no armv6 (Iphone 3G e inferior) quanto no armv7 (tudo mais novo que o 3G, incluindo o 3GS).

arquiteturas: armv6 e armv7 (removidas $ (ARCHS_STANDARD_32_BIT))
constroem somente a arquitetura ativa: sem
recursos de dispositivo necessários: armv6

não coloque armv7 nos recursos necessários do dispositivo, se quiser que o aplicativo seja executado em 3G e inferior.

noromamai
fonte
1
é a única coisa que funcionou para mim. teste em iphone4, iphone3g, ipad1, ipad2. li que eu tinha que colocar ARMv6 E ARMv7 nas capacidades do dispositivo necessários, mas, logo que eu colocar em ARMv7, o app não iria upload / corrida na iphone3g
noromamai
Deixar a entrada armv7 em "Recursos necessários do dispositivo" fez com que o Xcode me proibisse de executar no iPhone 3G.
tinsukE