O aplicativo iPhone SDK 3/4 não será executado em um dispositivo iPhone 2.x, mesmo com o destino de implantação definido como 2.0

StackOverflow https://stackoverflow.com/questions/3009498

Pergunta

Conheço a diferença entre os SDKs base/ativo e o destino de implantação. Eu tenho meu SDK base definido em 4.0 e o destino de implantação definido em 2.0. Não estou usando nenhum APIs Post 2.x, condicional ou não. Como não posso depurar em um dispositivo 2.x, depois de construí -lo, uso o utilitário de configuração do iPhone para instalar o aplicativo no dispositivo, o que ele se sai muito bem. O problema é que não é executado! Acabei de receber uma tela em branco. A janela principal nunca aparece!

Agora antes de perguntar ...

  1. Eu tive o mesmo problema com o iPhone SDK 3.x. Atualizei para o 4.x esperando que fosse resolvido. Não foi.

  2. Sim, o perfil de provisionamento está instalado. (Não foi possível instalar o aplicativo se não fosse.)

  3. Esse mesmo aplicativo compilado funciona bem em dispositivos 3.x. Mesmo com os dispositivos 4.x. Apenas não 2.x dispositivos.

  4. Novamente, não, eu não estou usando nenhum SDKs pós-2.x. Para provar isso, criei um aplicativo novo baseado em janela da diálogo 'Novo projeto' e as únicas alterações que fiz foram a cor de fundo da janela (para provar o XIB carregado) e defina o destino de implantação para 2.0 ( Ainda é compilado no 4.x SDK.) Novamente, ele funciona bem nos dispositivos 3.x ou 4.x, mas apenas uma tela preta em branco em dispositivos 2.x.

Eu tentei isso em três dispositivos 2.x separados, incluíram um restaurado recém -restaurado. Eu usei três máquinas de dev separadas (MacBook Pro com o 3.x SDK, MacBook Pro com o 4.x SDK e um Mac Pro com o 3.x SDK.) O mesmo resultado.

Estou perplexo.

O fato de que mesmo um projeto não modificado não é realmente confuso. Poderia ser o arquivo xib? Eles mudaram o formato de 2.x para algo mais recente no 3.x SDK? Nesse caso, como faço para colocá -lo de volta para 2.x. (Mais uma vez, isso é apenas um palpite completo.) Mas estou realmente perplexo!

Foi útil?

Solução 3

Acontece que a Apple fez uma mudança de ruptura (ou com mais precisão, uma mudança de 'fixação') que eles não comentaram. Especificamente, nosso aplicativo não estava definindo explicitamente a janela principal visível via código ou através da opção 'Show at Launch' no IB. Mas ... em uma versão do SDK, o tempo de execução, vendo nada definido além de precisar exibir algo, mostrou implicitamente a janela no arquivo XIB principal. No entanto, os SDKs mais recentes (e mais antigos) (na verdade) não tinham esse comportamento implícito; portanto, quando nosso código não mostrou explicitamente a janela, acabamos de ter uma tela em branco.

Então, simplesmente verificamos a opção 'show no lançamento' no IB e funcionou. Feito e feito!

Outras dicas

Você verificou o ApplicationDidfinishlaunching: Opções: Ligue para o seu delegado de aplicativo?

As opções: o parâmetro foi adicionado no 3.0 e não está presente em nenhum dos meus códigos pré-3.0, embora o formulário anterior ainda funcione.

O dicionário de opções: é usado para transmitir informações ao seu aplicativo, como 'eu fui comecei com um URL do safari' etc.

Se você espera executar no 2.0, provavelmente deve alterar isso de volta para o 'ApplicationDidFinishLaunching original:'.

2.x está completamente descontinuado para publicação na App Store. Você poderá instalá -lo em um dispositivo usando uma versão anterior do Xcode, mas é isso. Mais informações no meu wiki da comunidade aqui:

Instale o Xcode 3.2.3 com iPhone SDK 4, Get "Base SDK Missing", não consigo ver outros SDKs

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top