Posso usar uma versão mais antiga do Xcode ou do Xamarin.iOS?

A documentação do Xamarin pressupõe o uso dos Xamarin.iOS e Xcode mais recentes, o que é recomendado. No entanto, alguns clientes preferem usar Xamarin.iOS e/ou Xcode mais antigos e gostariam de obter detalhes sobre as consequências.

As notas sobre a versão contêm o seguinte aviso:

Aviso

Usando uma versão mais antiga do Xcode

O uso de uma versão mais antiga do Xcode (do que a mencionada nos requisitos acima) geralmente é possível, mas alguns recursos podem não estar disponíveis. Além disso, algumas limitações podem exigir soluções alternativas, por exemplo:

  • O estático registrar requer arquivos de cabeçalhos Xcode para criar aplicativos, levando a MT0091 erros ou MT4109 se as APIs estiverem ausentes. Na maioria dos casos, habilitar o vinculador gerenciado ajudará (removendo a API).
  • Builds de bitcode (para tvOS e watchOS) podem falhar no envio para o App Store a menos que uma cadeia de ferramentas Xcode 9.0+ seja usada.

Informações adicionais

A Microsoft recomenda fortemente usar o Xcode mais recente e a versão mais recente do Xamarin.iOS ao desenvolver e enviar aplicativos. A Apple exige o uso do Xcode mais recente ao enviar aplicativos.

Observe que o uso do Xcode mais recente não impede que seu aplicativo direcione versões mais antigas do iOS. As versões do iOS compatíveis são baseadas na entrada info.plist e nas APIs que seu aplicativo usa.

É possível instalar várias versões do Xcode lado a lado, com nomes diferentes, como Xcode101.app e Xcode102.app. Se você usar várias versões, defina o Xcode ativo em Configurações de Visual Studio para Mac e com a xcode-selectferramenta de linha de comando.

No entanto, circunstâncias raras podem exigir o uso de componentes mais antigos. Esta documentação descreverá os desafios gerais que você pode enfrentar ao usar versões mais antigas do que as mais recentes.

Cada versão da Apple é única, porém, e você pode se deparar com outras armadilhas não documentadas aqui.

Às vezes, esses desafios não são triviais de resolver, portanto, sempre que possível, mantenha a configuração com suporte do Xcode mais recente e do Xamarin.iOS mais recente.

Uso de um Xamarin.iOS antigo com um Xcode antigo

Não atualizar o Xamarin.iOS e o Xcode é possível, pelo menos por algum tempo. O limite é que, em algum momento, a Apple exigirá uma versão mínima do Xcode para enviar seus aplicativos. Neste ponto, você deve atualizar todos os seus componentes (macOS, Xcode e Xamarin.iOS) para as versões mais recentes (ou a nova versão mínima do Xcode exigida pela Apple e a versão do Xamarin.iOS correspondente).

Geralmente, é mais fácil atualizar e acompanhar gradualmente as pequenas alterações. Para projetos grandes em que as atualizações podem ser mais difíceis de acompanhar, ficar com um conjunto de trabalho conhecido pode ser um bom comprometimento.

Uso do novo Xamarin.iOS com Xcode mais antigo

O Xamarin.iOS em geral dá suporte a versões Xcode mais antigas sempre que razoavelmente possível. Alguns desafios potenciais incluem:

  • O Xamarin.iOS mais recente pode dar suporte a alguns recursos e APIs não presentes no Xcode selecionado.
  • O estático registrar requer arquivos de cabeçalhos Xcode para criar aplicativos, levando a MT0091 erros ou MT4109 se as APIs estiverem ausentes.
    • Na maioria dos casos, habilitar o vinculador gerenciado ajudará (removendo as associações gerenciadas para a nova API) se não forem usadas.
  • Builds de bitcode (para tvOS e watchOS) podem falhar no envio para o App Store a menos que uma cadeia de ferramentas Xcode 9.0+ seja usada.

Uso do novo Xcode com o Xamarin.iOS mais antigo

Esse caso de uso é significativamente mais difícil, pois o Xamarin.iOS não pode prever os requisitos de alteração do novo Xcode. Atualizações do macOS também podem introduzir problemas e, sem patches de compatibilidade, muitas partes do Xamarin.iOS podem ser afetadas.

Há várias áreas em potencial em que as coisas podem dar errado, incluindo:

  • Incompatibilidades com mlaunch:
    • O suporte ao simulador pode não funcionar corretamente (ou em tudo)
    • O suporte ao dispositivo pode não funcionar corretamente (ou em tudo)
  • Suporte desconhecido para mtouch
    • Sem suporte para novas estruturas
    • Sem suporte para novos direitos
    • Não há suporte para ferramentas novas ou atualizadas
      • Isso também pode afetar a assinatura de código

Novas regras de envio da AppStore

A Apple se reserva o direito de atualizar para as regras de envios da AppStore a qualquer momento. Essas alterações de regra só são anunciadas com antecedência. Algumas dessas alterações exigem alterações de ferramentas para dar suporte, o que exigiria um componente Xamarin.iOS atualizado.

Além das alterações de regra, a Apple geralmente adiciona validações adicionais aos aplicativos enviados ou aperta as existentes. Algumas delas exigem alterações em nossas ferramentas (por exemplo, novos símbolos bloqueados). Muitos deles são encontrados pela primeira vez pelos clientes que estão enviando, pois não há nenhum anúncio (ou lista) das regras.

Resumo

Sempre que possível, jogue-o com segurança seguindo as diretrizes da Apple e desenvolvendo e enviando com o Xcode mais recente lançado no App Store.

Por sua vez, use o Xamarin.iOS mais recente lançado. Isso acompanhará as correções mais recentes que podem afetar os aplicativos enviados e estarão em conformidade com as alterações de regra mais recentes.

Quando isso não for viável, considere usar uma versão Xcode e Xamarin.iOS mais antigas correspondentes. Isso pode funcionar por um tempo, mas em algum momento a Apple insistirá em ferramentas mais recentes para planejar adequadamente.