Após a atualização para o Xcode 5.1, não consigo mais criar meu projeto para o simulador de 64 bits, recebendo este erro:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
Estas são minhas configurações de criação de destino:
Tentei mudar "Build Active Architecture" para No, além de adicionar "i386" às "Valid Architectures", mas infelizmente não funcionaram. Obrigado por todas as sugestões!
Respostas:
Recebi a mesma mensagem de erro após a atualização para o XCode 5.1. Você está usando CocoaPods? Nesse caso, isso deve resolver o problema:
fonte
O que você precisa fazer é apenas definir
ONLY_ACTIVE_ARCH
comoNO
(pelo menos funciona para mim). Abaixo está uma captura de tela:EDITAR:
Tanto quanto eu sei ( por favor, indique se há algo errado, obrigado ), se você definir
ONLY_ACTIVE_ARCH
comoYES
, significa que o Xcode construirá apenas para a arquitetura ativa (que se refere ao dispositivo que está ativo no Xcode atualmente). Parece que a configuração padrão do Xcode está definida como DebugYES
, para que ele não crie binários para outras arquiteturas quando você desejar criar apenas um dispositivo especial conectado ao seu Mac.O motivo da falha na criação pode ser que, o projeto não suporta a arquitetura do dispositivo que você conectou. Portanto, a melhor solução é adicionar a arquitetura certa para o seu dispositivo. Abaixo está uma lista de arquiteturas e os dispositivos que suportam:
iPhone 6
,iPhone 5s
,iPad Air
,Retina iPad Mini
iPhone 5
,iPhone 5c
,iPad 4
iPhone 3GS
,iPhone 4
,iPhone 4S
,iPod 3G/4G/5G
,iPad
,iPad 2
,iPad 3
,iPad Mini
iPhone
,iPhone 3G
,iPod 1G/2G
Então, por que "definir o
ONLY_ACTIVE_ARCH
comoNO
" funciona? Como o dispositivo ainda pode executar o binário que foi criado para todas as arquiteturas que você adicionou (passe na compilação), mas perderá algum desempenho. Esta é apenas uma solução rápida, mas não é a melhor.Nota : Quanto mais arquiteturas você adicionar, maior será o binário. Portanto, é bom escolher as arquiteturas certas para o seu projeto. ;)
fonte
Adicione
arm64
ao alvovalid architectures
. Parece que também adicionax86-64
arquitetura às arquiteturas válidas do simulador.fonte
Se você estiver usando o CocoaPods, o problema mais provável é que o seu projeto de Pods, Configurações de Compilação para Construir Somente Arquitetura Ativa, esteja definido como Sim para Depuração.
A solução é simples. Altere para Não .
Da mesma forma, mude para Não para o seu projeto de aplicativo.
fonte
Eu tive um problema semelhante. Resolva isso alterando "Arquitetura" para " $ (ARCHS_STANDARD_32_BIT) " em Configurações de compilação para o projeto.
Agora, você deve selecionar as arquiteturas padrão (armv7, arm64) - $ (ARCHS_STANDARD), pois a Apple recomenda que os aplicativos sejam construídos na arquitetura de 64 bits. Clique em: documento Apple
fonte
$(ARCHS_STANDARD_INCLUDING_64_BIT)
?$(ARCHS_STANDARD_32_BIT)
ou$(ARCHS_STANDARD_INCLUDING_64_BIT)
?Adicionar: arquiteturas: $ (ARCHS_STANDARD_INCLUDING_64_BIT)
Arquiteturas válidas: arm64 armv7 armv7s
fonte
Caso alguém ainda encontre o problema, apesar de seguir o acima, verifique se o simulador que você está executando também é o suportado. Eu tinha o meu especificado para arm7 e arm7s, mas estava tentando executar o aplicativo em um simulador de 64 bits.
fonte
Para evitar que o "pod install" redefina only_active_arch para depuração sempre que for executado, você pode adicionar o seguinte ao seu arquivo pod
fonte
Basta adicionar arm64 na arquitetura válida. Espero que funcione para você.
fonte
Meu problema era que o projeto Pods estava direcionado para o OS X, apesar do meu Podfile
platform :ios
. Estou usando cocoapods 0.35.0.rc2.Para corrigi-lo, selecione o projeto Pods no navegador do projeto e verifique se o nó Pods PROJECT (lembre-se, não o destino Pods) está direcionado para iOS. Ou seja, as configurações de construção das arquiteturas devem ser:
$(ARCHS_STANDARD)
iOS 8.1
iOS
$(ARCHS_STANDARD)
Também queria criar todas as arquiteturas, então adicionei o seguinte ao Podfile:
fonte
Eu tive que adicionar o seguinte
i386
ex86_64
paraValid Architectures
. Estou executando o Xcode 7.2 e segmentando o iOS 8 ou superior. Eu já tinhaarmv7
,armv7s
earm64
lá dentro, e isso estava funcionando no Xcode 6.4.fonte
Eu enfrentei o mesmo problema ao executar meu aplicativo no iPad usando o xcode 5.1. Foi resolvido removendo armv7s de 'arquiteturas válidas' e definindo o valor 'construir somente arquiteturas ativas' como Não. Ambos os campos podem ser encontrados em seu aplicativo-> destinos-> configurações de construção-> arquiteturas.
fonte
Cheguei a essa pergunta devido a um problema com a construção da linha de comando para o simulador no Xcode 7.2. Caso alguém chegue aqui com o mesmo problema, compartilharei a solução que encontrei:
Aparentemente, existe um bug no Xcode 7.2 que causa
xcodebuild
falha ao tentar criar para o simulador. A solução é especificar a opção "-destination", por exemplo:Atualizar
O comando de exemplo acima criará um binário, incluindo os gráficos apenas para o iPhone 6. Se o binário for executado em outros simuladores, os gráficos do iPhone 6 serão redimensionados para a plataforma. Uma solução melhor que contém todos os gráficos para todas as plataformas é especificar o parâmetro
PLATFORM_NAME=iphonesimulator
, por exemplo:fonte
Tente remover todas as arquiteturas anteriores (por exemplo, remova a configuração ARCHS_STANDARD) ao mesmo tempo em que adiciona o i386 às arquiteturas. Isso deve alterar a arquitetura ativa para i386. Encontrei um problema semelhante ao tentar criar para o armv7 por padrão, mas ele continuou tentando criar para o arm64. Alterei ARCHS_STANDARD para ARCHS_STANDARD_32_BIT e isso alterou a arquitetura ativa escolhida.
fonte
Na acrhiecture - às vezes para suportar 6.0 e 7.0, excluímos arm64
Em arquiteturas -> acrchitecture - selecione a arquitetura padrão arm64 armv7 armv7s. Logo abaixo em Acrchitecture Valid, o usuário arm64 armv7 armv7s está incluído. Isso funcionou para mim.
fonte
Resolvi esse problema usando a resposta de @ Kjuly e a linha específica:
"O motivo da falha na criação pode ser que, o projeto não suporta a arquitetura do dispositivo que você conectou."
Com o Xcode carregado, ele define automaticamente meu aplicativo para iPad como iPad Air
Isso causou o erro de análise de dependência.
A alteração do tipo de dispositivo resolveu imediatamente o problema:
Não sei por que isso funciona, mas essa é uma resposta muito rápida, que me salvou de muitas brincadeiras em segundo plano e instantaneamente colocou o aplicativo trabalhando para testar. Eu nunca teria pensado que isso poderia ser uma coisa e algo tão simples o consertaria, mas, neste caso, o fez.
fonte
Eu achei que era necessário digitar os nomes da arquitetura manualmente:
Não sei por que isso foi necessário, ou seja, por que esses valores não foram herdados do próprio Xcode. Mas assim que fiz isso, o problema desapareceu.
fonte
Em Arquiteturas válidas: selecione cada entrada (liberação, depuração) e crie e pressione backspace. Deveria funcionar
fonte