Erro de compilation – falta da arquitetura necessária i386 no arquivo

Estou recebendo este erro ao criar meu aplicativo para iPhone:

ld: aviso: em /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit, faltando a arquitetura necessária i386 no arquivo

Vai o mesmo para todas as estruturas no meu aplicativo. É muito estranho já que isso não estava acontecendo antes.

Isso acontece quando você adiciona uma estrutura ao seu projeto e, sem intenção, copia a estrutura no diretório do projeto.

A correção é verificar o diretório do projeto (onde você armazena o projeto no disco) para qualquer arquivo SDK * .Framework do iPhone e excluí-los.

Projeto irá construir bem depois.

Eu tive esse mesmo problema, e a solução acabou sendo uma solução fácil. Em seguida, abra o backup project.pbxproj (localizado dentro do pacote do arquivo de projeto) em TextMate ou TextEdit e procure a seção “/ * Begin XCBuildConfiguration section * /”. Procure por uma chave chamada FRAMEWORK_SEARCH_PATHS e exclua-a e seu conteúdo (uma vez por configuração de compilation, removi-a em dois locais). Aqui está um exemplo do que eu deletei:

FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",); 

Meu projeto agora é criado para o iPhone e o iPhoneSimulator.

O que aconteceu aqui é que o Xcode misteriosamente adicionou uma input “Framework Search Paths” que aponta para um determinado SDK do iPhone. Por exemplo, o meu foi recentemente definido para:

 $(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks 

Isso leva o compilador a encontrar estruturas da arquitetura incorreta. Remover quaisquer valores na chave “Framework Search Paths” nas configurações de compilation do seu destino resolverá o problema.

Eu só queria mencionar que no XCode se você vai para “Editar configurações do projeto” e encontrar “Caminhos de pesquisa” Existe um campo para “Caminhos de pesquisa de estrutura”. Atualizando isso deve corrigir o problema, sem ter que hackear o arquivo de projeto!

Felicidades!

Jesse

Verifique se você não copiou a estrutura em seu projeto quando a adicionou. Se você copiou, não consegue encontrar os caminhos originais. Para corrigir esse problema. Exclua a estrutura do AVFoundation da pasta de estruturas em seu projeto e, em seguida, adicione-a novamente, mas, desta vez, verifique se você não tem a verificação de cópia marcada.

Isso consertou para mim!

Eu corrigi-lo de uma maneira diferente.A razão pela qual eu estava recebendo este erro foi que eu adicionei security.framework duas vezes no meu projeto.Eu não era capaz de ver a estrutura de segurança no xcode, abri o projeto no finder e encontrei este quadro que Eu apaguei e solucionou problema.

Embora seja possível que algo tenha sido deletado, tem sido minha experiência que algo está estragado no arquivo do projeto. Eu ainda tenho que definir o que “algo” é. Eu tive problemas semelhantes quando a instalação do SDK está bem. Há um par de opções.

Primeiro, adicione todos os seus arquivos a um novo projeto. Isso parece funcionar normalmente. Meio que uma dor, no entanto.

Segundo, você pode clicar com o botão direito do mouse no projeto em XCode / Get Info / Build / Library Search Paths. Adicione novos caminhos semelhantes a /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib. Adicione versões apropriadas dessa string para cada versão (2.2.1, etc) e plataforma (simulador ou iPhoneOS). Execute uma ação semelhante para os caminhos de pesquisa do Framework se os frameworks forem o seu problema.

Em terceiro lugar, o que é mais trabalho, mas mais confiável, é abrir project.pbxproj de dentro de MyProject.xcodeproj (Textmate é bom para isso). Procure “/ * Begin XCBuildConfiguration section * /”, depois “LIBRARY_SEARCH_PATHS” e “FRAMEWORK_SEARCH_PATHS”. Adicione ou modifique os caminhos conforme apropriado e salve o arquivo.

Em qualquer caso, uma dor no traseiro, e eu com certeza gostaria de apontar a causa porque eu tive isso acontecer algumas vezes. Projeto constrói bem, então apenas para cima e se recusa a fazê-lo com o que parece ser pouca razão.

Se seu aplicativo for executado no dispositivo, verifique se você não está tentando executá-lo no simulador. Pode parecer óbvio, mas verifique de qualquer maneira.

“Editar configurações do projeto” e encontrar “Caminhos de pesquisa” Existe um campo para “Caminhos de pesquisa da estrutura”. deletar tudo !!

Isso só aconteceu aqui comigo também. Graças a um grande parceiro, encontramos a resposta. Seu Xcode pode estar apontando para o simulador .. mude para um dispositivo IOS ao invés ..built suave depois ….

Execute o comando file no framework do Terminal:

 file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit 

Você deve receber uma mensagem informando quais arquiteturas o binário do UIKit é compatível. Se você não vê “i386” listado, então você de alguma forma conseguiu remover a versão i386 do UIKit, o que significa que você não pode construir para o simulador. Para corrigir isso, você terá que reinstalar o SDK.

Se você receber algum outro erro, espero que ajude você a descobrir qual é o problema real.

Eu só quero que você saiba que No meu caso, eu estava tendo o mesmo problema, percebi que eu tinha uma pasta Xcode mais antiga chamada Xcode3.1.3 Eu apenas renomei porque era uma versão mais antiga e que fez a mágica para mim.

Verifique os caminhos de pesquisa da sua biblioteca nas configurações de destino. Às vezes, as bibliotecas engraçadas são inseridas lá e isso gera um erro semelhante.

Você pode remover todas as inputs nesta seção.

Eu acabei de experimentar algo um pouco diferente, porque eu trabalho em minha própria biblioteca (WM_GSRecognizerLib), mas o erro é o mesmo.

O que aconteceu: devido a algumas atualizações, o caminho que direcionava a lib para include (.a) era da pasta “Debug-iphoneos” (onde é gerada). A compilation para dispositivos iOS genéricos funcionou bem, mas não para o simulador, reclamando da falta da arquitetura i386.

O que fiz para esse problema é include também os binários da pasta “Debug-iphonesimulator”.

Isso pode ajudar neste tópico, porque a explicação está aqui: os dispositivos requerem binários para arm64 / armv7 / armv7s, enquanto o simulador precisa do i386.

Eu também tenho o mesmo erro estou usando xcode versão 4.0.2 então o que eu fiz foi selecionado o arquivo de projeto xcode e do seu eu selecionei a opção de destino que eu podia ver o aplicativo do meu projeto, então eu cliquei nele e fui para a compilation opção de configurações.

Na opção de pesquisa eu digitei o caminho de pesquisa do Framework e excluí todas as configurações e, em seguida, cliquei no botão de compilation e isso funcionou para mim,

Obrigado e cumprimentos