É possível instalar o iOS 6 SDK no Xcode 5?

250

O Xcode 5 possui um painel de preferências que permite fazer o download do simulador do iPhone 6.1, no entanto, não consigo encontrar um local em que ele permita o download do iOS 6 SDK, portanto, não é possível definir o SDK ativo para o iOS 6 ao desenvolver o Xcode 5 Existe uma solução alternativa que permita ao Xcode 5 instalar o iOS 6 SDK?

EDITAR:

As soluções alternativas não serão mais necessárias agora que o Xcode 5 está geralmente disponível e permite que você baixe versões anteriores do SDK.

insira a descrição da imagem aqui

Tony
fonte
41
Para tirar proveito de muitas melhorias no Xcode 5, enquanto ainda é capaz de criar aplicativos para a loja de aplicativos atual.
24413 Tony
61
Ei, maluco, a questão de "adotar o iOS 7 de qualquer maneira" não está totalmente ligada ao lançamento do GA. A decisão e o esforço de redesenhar toda a linguagem de design e o UX de um aplicativo para alinhar-se com o design plano e os componentes de interface do usuário redesenhados do iOS7 não são pequenos, nem podem vir facilmente da perspectiva de negócios e tempo. A criação no SDK 6.1 fará com que o iOS7 use a linguagem de design da interface do usuário do iOS 6 e anterior (para fins de suporte para versões anteriores). Portanto, pode ser muito bem garantido que desejamos desenvolver no Xcode 5 contra o SDK 6.1 por um bom momento.
March
2
hmmm talvez porque ele espera que o SDK seja separado do IDE, em vez de uma pilha monolítica de código?
Phreakhead # 17/13
1
Atualmente, estou trabalhando com um cliente que não está pronto para adotar as alterações na interface do IOS7, mas pode se beneficiar das melhorias na migração de dados principais no XCode 5. Portanto, nesse caso, é exatamente isso que eu quero também.
Droid Chris
Pode-se pensar que o Xcode, se não incluísse o SDK 6.1, pelo menos o integraria sem problemas. Mas depois há esse problema .
JohnK

Respostas:

203

EDIT: A partir de 1º de fevereiro de 2014, a Apple não aceitará mais aplicativos pré-iOS7 para envio à App Store. Portanto, embora essa técnica ainda funcione, não será útil para a maioria dos leitores.


Sim, está bem. Ainda construo com o iOS 4.3 para um projeto (já faz um tempo desde que atualizamos; mas eles ainda o aceitaram após o lançamento do iOS 6), e atualmente construo 10.5 aplicativos com o Xcode 5.

Consulte Como apontar o Xcode para um SDK antigo para que ele possa ser usado como um "SDK Base"? para detalhes sobre como configurá-lo. Você pode usar meu script fix-xcode para vincular tudo para você sempre que atualizar.

O único truque é obter os SDKs antigos. Se você não os possui, geralmente precisa fazer o download de versões antigas do Xcode (ainda disponíveis no developer.apple.com ), abrir o pacote do instalador e procurar o SDK necessário.

Os SDKs podem ser encontrados no pacote do instalador em:

Xcode.app/Contents/Developer/Platforms/

Rob Napier
fonte
você precisa remover o iOS 7 SDK ao arquivar para garantir que ele seja compilado com o iOS 6 SDK?
Ohayon
6
Oi. isso está perto, mas não é bem para mim. os botões se parecem com o iOS 6, mas o conteúdo do controlador de exibição ainda sobe atrás da barra de navegação ao usar um UINavigationController. algum pensamento sobre como obter o comportamento do iOS 6 para isso também?
mate bezark
2
Não; você verá isso apenas no dispositivo. Não há modo de compatibilidade com o iOS 6 no simulador do iOS 7. Se você quiser ver como fica no simulador, teste no simulador do iOS 6.
22613 Rob Napier
1
Posso enviar o aplicativo criado com o Xcode 5 e o iOS 6 SDK para a App Store?
precisa saber é o seguinte
1
Desde que o iPad 1 ainda seja suportado, você sempre pode assumir que a Apple aceitará o 5.X iOS. Não pode ser atualizado.
ahwulf
60

Eu também estava executando o mesmo problema quando atualizei para o xcode 5 e removi o sdk mais antigo. Mas tirei a cópia do SDK mais antigo de outro computador e o mesmo pode ser baixado no seguinte link.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com conta de teste [email protected]/test)

Existem 2 maneiras de trabalhar.

1) Descompacte e cole esta pasta em /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs e reinicie o xcode.

Mas isso pode ser removido novamente pelo Xcode se você atualizar o xcode.

2) Outra maneira é descompactar e colar onde quiser e vá para /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs e crie um link simbólico aqui, para que o SDK permaneça o mesmo, mesmo que você atualiza o Xcode.

Outra alteração que fiz, Configuração de construção> Arquiteturas> padrão (não 64), para listar todas as versões do Deployment Target

Não é necessário fazer o download do zip se você apenas deseja alterar o destino de implantação.

Aqui estão algumas capturas de tela. insira a descrição da imagem aqui insira a descrição da imagem aqui

AvtarSingh Suchariya
fonte
2
como e onde você baixou este ios6.1 sdk? Estou procurando o iOS 5 sdk para rodar no meu Xcode 5. Você pode fazer o upload ou apontar para mim onde posso fazer o download sozinho. Obrigado
Sam B
Na verdade, eu estou tendo o sistema antigo também. então eu tirei isso do xcode mais antigo. O mesmo que eu tentei para o ios sdk 5, mas como não era muito necessário, não tentei tirar isso. Além disso, se essa resposta parecer boa, valorizo ​​seu feedback em termos de + ou -. Obrigado.
AvtarSingh Suchariya
1
Ei Avtar, eu baixei o seu zip ios6, descompactei-o no caminho que você listou, fechei o xcode 5 completamente, o reiniciei novamente e ainda vejo apenas 7.0 como destino implementável na opção suspensa. Eu suponho que faltam etapas e há mais?
Sam B
O mesmo está funcionando para mim. Apenas uma pergunta, você adicionou isso ao próprio aplicativo xcode ou criou um link simbólico?
AvtarSingh Suchariya
diretamente para o próprio aplicativo dir.
21813 Sam B
34

Sim, acabei de resolver o problema hoje.

  1. Encontre o arquivo SDK, como iPhoneOS6.1.sdk, no diretório Xcode mais antigo ou do seu amigo.
  2. Copie e coloque-o no diretório Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

insira a descrição da imagem aqui

Então você pode escolher o SDK como abaixo:

insira a descrição da imagem aqui

Espero que isso ajude você.

Jason Lee
fonte
2
Eu fiz o mesmo, mas minha GUI de aplicativo muda e parece com a GUI do iOS 7. Eu escolhi o simulador do iPhone Retina (4 polegadas de 64 bits) para executar o aplicativo. Estou sentindo falta de mais alguma coisa depois de fazer isso.
pitão
20

Encontre e baixe o SDK antigo. Os SDKs mais antigos são encontrados aqui .

Copiei o diretório xcode.app como Xcode_4.6.3.app.

Agora você pode testar e depurar nas duas versões do xcode. Você precisa executá-los nas pastas correspondentes ou criar atalhos na área de trabalho. Ao construir a partir da linha de comando, forneça o parâmetro como em iPhoneOS6.1vez deiPhoneOS7.0

Isso funcionou muito bem para mim no Xcode5 e iOS.

Vá para o dir SDK do Xcode5. Geralmente está localizado em:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Adicione um link simbólico ao SDK antigo como este:

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

Ou, com mais precisão, de qualquer lugar da linha de comando,

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk
karim
fonte
Podemos usar esta opção para testar nosso aplicativo, mas provavelmente após fevereiro de 2014, qualquer aplicativo criado com iOS 7 sdk anterior não será aceito na loja de aplicativos!
karim
11

Você pode baixar o SDK mais antigo e instalá-lo no

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

pasta. Sair + Faça login apenas para garantir que as alterações tenham efeito e você deverá ver o SDK mais antigo em seu novo XCode

unspokenblabber
fonte
Eu fiz isso (usando o link de download em uma resposta anterior) e a opção iOS 6.1 sdk aparece no xcode 5 em Configurações de compilação> Arquiteturas> SDK base. No entanto, quando crio e executo no simulador do iOS 7 (ou dispositivo iOS 7), ele ainda usa os botões do iOS 7 UIKit (não as versões do iOS 6). Se alguém tiver alguma sugestão a respeito de porque, eu ficaria grato ....
Bill Patterson
Se você tiver o TimeMachine instalado, poderá abrir o caminho acima (no tipo de terminal: abra "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") e restaurar o iOS6.1 SDK a partir daí .
avance
11

Apenas para adicionar, você pode realmente baixar versões antigas do simulador com o próprio Xcode 5 - basta ir às preferências e você as encontrará em Downloads:

insira a descrição da imagem aqui

Smikey
fonte
Isso deve ter acontecido desde que o xcode 5 saiu da versão beta e agora é uma versão geral. É bom saber, graças Smikey
Tony
5
@ Manni Isso não é o mesmo que compilar com a API antiga. Você está construindo usando a nova API para iOS 6.
oligofren
Essas opções não aparecem por padrão no Xcode 6, mesmo se você tiver definido uma plataforma de destino mais antiga.
GilesDMiddleton
10
  • Faça o download do Xcode 4.6.x no Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Crie uma pasta chamada Xcode4 dentro da pasta Aplicativos e arraste e solte o dmg baixado lá.
  • Abra uma janela do terminal

    $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  • Você será solicitado a digitar uma senha, pois está dentro de uma pasta do sistema

  • Abra o Xcode 5 e agora você verá os dois SDKs
autremoi
fonte
10

Apenas para mim a solução mais fácil:

  1. Localize um SDK mais antigo como, por exemplo, "iPhoneOS6.1 sdk" em uma versão mais antiga do xcode, por exemplo. Caso contrário, você pode baixá-lo no servidor Apple Developer neste endereço: https://developer.apple.com/downloads/index.action?name=Xcode Ao abrir o xcode.dmg, você pode encontrá-lo abrindo o Xcode.app (clique com o botão direito do mouse e "mostre o conteúdo") e acesse Conteúdo / Desenvolvedor / Plataformas / iPhoneOS.platform / Desenvolvedor / SDKs / iPhoneOS6.1 sdk insira a descrição da imagem aqui
  2. Simples Copie a pasta iPhoneOS6.X sdk e cole-a no seu xcode.app
    • clique com o botão direito do mouse em seu xcode.app na pasta Aplicativos.
    • Vá para Conteúdo / Desenvolvedor / Plataformas / iPhoneOS.platform / Desenvolvedor / SDKs /
    • Basta colar aqui.

insira a descrição da imagem aqui

  1. Feche o aplicativo xcode e abra-o novamente.

Para testar um aplicativo no iOS 6 no seu simulador: - Basta escolher o iOS 6.0 no seu sheme ativo. insira a descrição da imagem aqui

Para criar seu aplicativo no iOS 6, o design do aplicativo também será o mais antigo em um iPhone com iOS 7: - Escolha iOS6.1 em Destinos - SDK base

insira a descrição da imagem aqui

Observe: quando você altera o SDK base em seus destinos, o iOS 7.0 não estará mais disponível para a criação no simulador!

Daniel C.
fonte
9

Posso fazer isso , mas não é realmente necessário

Como fazer isso

Jason Lee conseguiu a resposta. Ao instalar o xCode, preferi manter as instalações anteriores em vez de substituí-las. Então, eu os tenho na minha pasta de instalação

insira a descrição da imagem aqui

Portanto, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKscontém sdks diferentes. (Substitua Xcode.app pelo número correto) copie os sdks anteriores para

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Aqui está minha pasta depois de copiar uma.

insira a descrição da imagem aqui

Agora reinicie o xCode e você pode definir as versões anteriores do sdks como sdk base.

Por que não é necessário

Referindo a Documentação da Apple

Para usar um SDK específico para um projeto do Xcode, faça duas seleções nas configurações de compilação do seu projeto.

  1. Escolha um destino de implantação .

    Isso identifica a versão mais antiga do sistema operacional na qual seu software pode ser executado.

  2. Escolha um SDK base

    Seu software pode usar os recursos disponíveis nas versões do sistema operacional, inclusive o correspondente ao SDK base. Por padrão, o Xcode define isso para o sistema operacional mais recente suportado pelo Xcode.

A regra é Usar o mais recente como SDK base e definir o destino de implantação para a versão mínima que o aplicativo deve executar

Por exemplo, você pode usar o iOS 7 como sdk base e definir o iOS 6 como destino de implantação. Execute no simulador do iOS 6 para testar como ele funciona no iOS 6. Instale o simulador, se não estiver disponível na lista de simuladores.

insira a descrição da imagem aqui

Além disso, você pode usar incondicionalmente os recursos até o iOS 6. E condicionalmente, você pode oferecer suporte a novos recursos do iOS 7 para novos dispositivos atualizados, além de versões anteriores.

Isso pode ser feito usando Classes fracamente ligados , fracamente ligados Métodos , Funções e símbolos

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

Ligação fraca

Suponha que no Xcode você defina o destino de implantação (versão mínima necessária) para iOS6 e o ​​SDK de destino (versão máxima permitida) para iOS7. Durante a compilação, o compilador vincularia fracamente qualquer interface que fosse introduzida no iOS7 e vincularia fortemente interfaces anteriores. Isso permitiria que seu aplicativo continuasse sendo executado no iOS6, mas ainda aproveitaria os recursos mais recentes quando estiverem disponíveis.

MadNik
fonte
4

As outras respostas aqui também estão corretas, mas considero as seguintes etapas as mais fáceis:

Faça o download do Xcode 4.6.3 no link do centro de desenvolvimento que diz "Procurando uma versão mais antiga do Xcode?" (atualmente aponta aqui ) e monte o dmg.

Em seguida, no terminal, copie os arquivos SDK sobre:

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

Por fim, reinicie o Xcode e pronto.

nioq
fonte
3

Meu aplicativo foi transferido para o Xcode 5 sem problemas, porque ainda pode ser construído com o Destino de Implantação do iOS original que você definiu no projeto (5.1 no meu caso). Se o novo SDK não causar algum problema intransponível, por que não criar usando-o? Certamente, existem muitas melhorias ocultas.

Por exemplo, eu prefiro usar o Xcode 5 em vez do 4.6.3. Por quê? Vou ter muito mais vida útil da bateria porque a rolagem da interface do usuário das áreas de texto / código no Xcode 5 não absorve mais um encadeamento inteiro da CPU.

Steven Lu
fonte
Razões para não fazer isso - o Xcode 5 é bastante instável no momento. Falhando de hora em hora para mim. Além disso, alguns problemas estranhos posicionais e problemas de cor em alguns pontos de vista (embora não muito trabalho para corrigir)
Nick H247
2

Vincular o SDK 6.1 ao Xcode 5, conforme descrito nas outras respostas, é uma etapa. No entanto, isso ainda não resolve o problema de executar no iOS 7 novos elementos da interface do usuário, ver os controladores em tamanho real etc.

Conforme descrito nesta resposta , também é necessário mudar a interface do usuário para o modo legado no iOS 7:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

Cuidado: esta é uma chave não documentada e não é recomendada para compilações da App Store!

Além disso, em minha experiência ao testar no dispositivo, descobri que ele funciona apenas na segunda vez em que inicio o aplicativo, mesmo executando o código bastante cedo no início do aplicativo, em +[AppDelegate initialize] . Também existem diferenças sutis em uma versão criada usando o Xcode 4.6. Por exemplo, as barras de navegação transparentes se comportam de maneira diferente (causando o tamanho total da exibição).

No entanto, desde que o Xcode 4.6.3 trava no Mavericks (pelo menos para mim, consulte rdar: // 15318883 ), essa é pelo menos uma solução para continuar usando o Xcode 5 para depuração.

Ortwin Gentz
fonte
1

Fiz o download do XCode 4 e levei o iOS 6.1 SDK para o XCode 5, conforme descrito em outras respostas. Também instalei o iOS 6.1 Simulator (estava disponível nas preferências). Também mudei o SDK Base para o iOS 6.1 nas configurações do projeto.

Depois de todas essas manipulações, o projeto com 6.1 base sdk é executado no modo de capacidade no iOS 7 Simulator.

OneSman7
fonte
1

A partir de 1º de fevereiro, a Apple rejeitará o aplicativo criado apenas para iOS6 ou inferior. Aqui também está a comunicação oficial da Apple. Melhor começar a construir para iOS7.

Para esclarecer minha afirmação: se você criar para iOS6 ou inferior, a Apple rejeitará seu aplicativo. Se você criar para o iOS7 e baixar tudo estiver bem, isso significa:

  1. você deve usar xcode5
  2. você deve implantar no iOS7 pelo menos.

O conteúdo do e-mail da Apple é bastante claro para mim

"Verifique se seus aplicativos funcionam perfeitamente com as tecnologias inovadoras do iOS 7. A partir de 1º de fevereiro, novos aplicativos e atualizações de aplicativos enviados à App Store devem ser criados com o Xcode 5 e o iOS 7 SDK".

Andrea
fonte
Sim, mas o iOS 6 SDK também funciona bem com o iOS 7. Alguns aplicativos são realmente difíceis de serem trocados.
Aniruddh Joshi
Eu acredito que você está incorreto. A Apple está exigindo: (a) Construído pelo Xcode 5 mais recente; e (b) otimizado para iOS 7. Veja meu comentário na resposta de Rob Napier para obter links.
Basil Bourque
Alguns de nós desenvolvemos para distribuição corporativa e precisamos segmentar SDKs (e dispositivos) mais antigos. Os aplicativos corporativos não passam pelo processo Apple Review e / ou App Store, e essa discussão é bastante útil, permanece relevante e continuará sendo relevante no futuro. Eu entendo sua perspectiva, mas não é a única.
Kevin OMara
Você está totalmente certo!!! Não pensei em distribuição corporativa. Mas não esqueça que você ainda pode implantar no iOS6 com o novo Xcode apenas definindo o destino da implantação, sem se preocupar com o processo de otimização e revisão do ios7.
Andrea
0

Atualmente, tenho o Xcode 4.6.3 e 5.0 instalado. Usei o seguinte script bash para vincular 5.0 aos SDKs na versão antiga:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

Você só precisa fornecer o caminho para o .app:

./xcode.sh /Applications/Xcode-463.app
Wayne
fonte
Observe que a atualização para o 5.1 removeu meu 7.0.x SDK e o substituiu pelo 7.1 SDK. Eu tenho uma instalação antiga da Xcode5-DP6qual consegui recuperar o 7.0.x, mas esse é um bom lembrete para fazer backup dos diretórios do SDK (ou renomear o aplicativo completamente) antes de atualizar ou instalar a versão mais recente do Xcode.
19414 Wayne