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
Limpei todos os alvos.
Agradeço qualquer dica.
Respostas:
Se você estiver usando o Xcode 4.2 ou superior, tente o seguinte:
Clique no nome do seu projeto (na coluna esquerda), seguido pelo destino:
Clique na guia 'Build Settings' (na coluna da direita):
Clique na linha 'Release' ou 'Distribution' em 'Architectures' e escolha 'Other ...':
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:
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.
fonte
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.
fonte
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.
Isso parecerá assim:
fonte
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).
Exclua armv7 dos 'Recursos necessários do dispositivo' em yourProjectName-Info.plist
fonte
Uma atualização do ios 6
Alterações no Xcode 4.5.x para ios 6
fonte
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.
fonte
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
é a minha configuração de tela.
Se você incluir o projeto, configure tudo. Espero sua ajuda.
fonte
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.
fonte
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
fonte
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
fonte
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.
fonte
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:
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) ....
fonte
Aqui está a documentação da Apple:
Perguntas e Respostas Técnicas QA1760
Diz que há duas coisas que você deve acertar:
armv6
às configurações de construção da arquiteturaNo
.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.fonte
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.
fonte
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
fonte
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.
fonte
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).
não coloque armv7 nos recursos necessários do dispositivo, se quiser que o aplicativo seja executado em 3G e inferior.
fonte