Recentemente, baixei o pacote Xcode 4.2 com iOS 5 SDK e imediatamente percebi que não consigo usar meu iPhone 3Gs com iOS 4.2.1 para depuração. Só consigo depurar e testar no meu iphone 4 com o iOS 5 instalado.
Para qualquer um dos meus dispositivos executando qualquer iOS inferior a 5.0, o Xcode apenas diz "Concluída a execução para iPhone3GS" e não o executa. Eu tenho minha meta de implantação definida para 3.0 porque não estou usando nenhum recurso em meu aplicativo acima de 3.0 e quero ser capaz de direcionar todas as versões 3.0 ou superior. Tenho todos os meus perfis de provisionamento instalados e atualizados.
Saí e reiniciei o xcode, limpei a compilação várias vezes. Eu tentei adicionar armv6 nas configurações de construção de arquitetura, mas nada me permitirá construir e executar meu aplicativo no meu telefone antigo com ios 4.2.1.
Minha pergunta é: ainda é possível fazer aplicativos com o novo SDK funcionarem para versões do iOS anteriores a 5? Como posso ter certeza de que meu aplicativo ainda será executado em versões anteriores do iOS se eu não conseguir instalá-los em meu telefone antigo?
Editar: OK, parece que o iOS SDK 5 abandonou o suporte para armv6 por padrão. O que você precisa fazer é adicionar armv6 no campo Arquiteturas em Configurações de compilação para seu destino e seu projeto. Assim, seu aplicativo poderá ser executado em dispositivos iPhone 3G. A resposta pode ser encontrada aqui Como construir para arquiteturas armv6 e armv7 com iOS 5
iOS
versões. Além disso, adicione a edição como uma resposta para que possa aceitar a solução que encontrou e esta questão possa ser marcada como respondida.Respostas:
Eu estava tendo o mesmo problema ao tentar obter um projeto Xcode 4.2 recém-criado em execução em um iPhone 3G 4.2.1. Aqui está como consegui fazê-lo funcionar.
1) Altere as "Configurações de compilação" do destino ==> "Arquitetura" de "Padrão (armv7)" para "outro". Adicione armv6 e armv7.
2) Altere as "Configurações de compilação" do destino ==> "Arquitetura válida" para armv6 e armv7.
3) Altere as "Configurações de compilação" do destino ==> "Destino de implantação iOS" para iOS 4.2.
4) Abra os projetos * -Info.plist, remova a configuração "Capacidades necessárias do dispositivo" (observe que é necessário armv7)
btw eu descobri isso quando tentei adicionar manualmente o aplicativo por meio do organizador e ele relatou:
Tudo deve funcionar depois disso. Fale sobre um PITA.
fonte
Vá para Xcode> Preferências> Downloads e instale o suporte de depuração para versões mais antigas do iOS.
fonte
mmorris me aproximou de resolver o problema ... No Info.plist, eu tive que definir os recursos necessários do dispositivo para armv6, não armv7 Espero que isso ajude outras pessoas também.
fonte
Você precisa conectar o telefone e depois ir ao organizador. O Xcode deve solicitar automaticamente a versão mais antiga.
Veja a página do desenvolvedor para mais informações. Foi descrito nas notas do 4.2 beta
fonte
Eu encontrei um problema semelhante ao tentar executar meu aplicativo em um iPod Touch antigo. Eu atualizei para o Xcode 4.3.3 e o aplicativo não funcionava mais no depurador para mim em um hardware mais antigo.
Acredito que os outros comentários aqui sobre "Arquiteturas" e "Recursos necessários do dispositivo" são detalhes importantes para especificar corretamente. Infelizmente, eles não foram suficientes para resolver meu problema.
No meu caso, descobri que o esquema de compilação era o culpado. O Xcode 4.3.3 solicitou que eu mudasse do depurador GDB para o LLDB ao atualizar meu projeto. Quando alterei a ação Executar do meu esquema de volta para GDB , consegui executar o aplicativo novamente no meu hardware antigo do Xcode.
fonte
Descobri que tinha que adicionar armv6 às arquiteturas, mas ainda não funcionou. E agora eu removi armv7 das capacidades necessárias, e foi isso! Funcionou!
fonte
Isso funcionou para mim e deve funcionar para você se você tinha uma versão anterior do Xcode. Do contrário, você deve seguir o conselho dado por outras pessoas para obter o SDK de uma versão mais antiga do SDK:
sudo cp -a /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
Este comando é apenas um pouco diferente daquele mostrado por outros, mas esses comandos soltaram os arquivos na própria pasta SDKs para mim - queremos que um subdiretório dele seja criado com o nome apropriado.
fonte
No meu caso, havia uma linha redundante nos recursos necessários do dispositivo
Acabei de removê-lo ...
Espero que ajude outra pessoa.
fonte