É possível segmentar versões mais antigas do iOS ao usar o Xcode 4.2 e o iOS 5 SDK?

Eu baixei recentemente o pacote Xcode 4.2 com o iOS 5 SDK e percebi imediatamente que não posso usar meu iPhone 3G com o iOS 4.2.1 para debugging. Eu só sou capaz de 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 “Terminou a execução para o iPhone3GS” e não o executa. Eu tenho meu destino de implantação definido como 3.0 porque não estou usando nenhum recurso no meu aplicativo acima de 3.0 e quero poder segmentar todas as versões 3.0 ou superiores. Eu tenho todos os meus perfis de provisionamento instalados e atualizados.

Eu saí e reiniciei xcode, eu limpei a compilation várias vezes. Eu tentei adicionar armv6 nas configurações de compilation da arquitetura, mas nada me permitirá criar e executar meu aplicativo no meu telefone antigo com o ios 4.2.1.

Minha pergunta é: é possível ainda fazer aplicativos com o novo trabalho do SDK para versões do iOS inferiores a 5? Como posso ter certeza de que meu aplicativo ainda será executado em versões inferiores do iOS se eu não conseguir instalá-lo no meu telefone antigo?

Edit: OK parece que o iOS SDK 5 caiu suporte para armv6 por padrão. O que você precisa fazer é adicionar armv6 no campo Architectures em Build Settings para seu Target e seu Project. Em seguida, seu aplicativo poderá ser executado em dispositivos iPhone 3G. Resposta pode ser encontrada aqui Como construir arquiteturas armv6 e armv7 com o iOS 5

Eu estava tendo o mesmo problema tentando obter um projeto recém-criado do Xcode 4.2 em execução em um iPhone 3G 4.2.1. Aqui está como eu consegui fazê-lo funcionar.

1) Mude o “Build Settings” do alvo ==> “Architecture” de “Standard (armv7)” para “other”. Adicione armv6 e armv7.

2) Mude as “Configurações de Construção” do alvo ==> “Arquitetura Válida” para armv6 e armv7.

3) Mude o “Build Settings” do alvo ==> “iOS Deployment Target” para o iOS 4.2.

insira a descrição da imagem aqui

4) Abra os projetos * -Info.plist, remova a configuração “Required device capabilities” (note que é necessário armv7) insira a descrição da imagem aqui

btw eu descobri isso quando tentei adicionar manualmente o aplicativo através do organizador e relatou:

Não é possível instalar o aplicativo

O Info.plist para aplicação em /Users/…/TestsDebug.app especifica os requisitos de capacidade do dispositivo, que não são atendidos pelo Dev iPhone 3G

Todos devem trabalhar depois disso. Fale sobre um PITA.

Vá para Xcode> Preferências> Downloads e instale o suporte a debugging para versões mais antigas do iOS.

mmorris me aproximou para resolver o problema … No Info.plist, eu tive que definir os resources de dispositivos necessários para armv6, não armv7 Espero que isso ajude os outros também.

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 para o beta 4.2

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 seria mais executado no depurador para mim em hardware mais antigo.

Acredito que os outros comentários aqui sobre “Arquiteturas” e “Recursos obrigatórios do dispositivo” são detalhes importantes para especificar corretamente. Infelizmente, eles não foram suficientes para resolver o meu problema.

No meu caso, achei o esquema de construção o culpado. O Xcode 4.3.3 me levou a mudar do depurador GDB para LLDB quando atualizou meu projeto. Quando mudei a ação Executar do meu esquema de volta para o GDB , consegui executar o aplicativo novamente no meu hardware antigo do Xcode.

Descobri que tinha que adicionar armv6 às arquiteturas, mas ainda não funcionava. E agora eu removi o armv7 dos resources necessários, e foi isso! Funcionou!

Isso funcionou para mim e deveria funcionar para você se você tivesse uma versão anterior do Xcode anteriormente. Caso 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

Esse comando é um pouco diferente do mostrado por outros, mas esses comandos descartaram os arquivos na própria pasta SDKs – queremos que um subdiretório seja criado com o nome apropriado.

No meu caso, havia uma linha redundante em resources do dispositivo necessário insira a descrição da imagem aqui

Acabei de remover …

insira a descrição da imagem aqui

Espero que ajude alguém.