Atualizando aplicativos iOS existentes
Siga estas etapas para atualizar um aplicativo Xamarin.iOS existente para usar a API unificada.
A atualização de um aplicativo existente para usar a API Unificada requer alterações no próprio arquivo de projeto, bem como nos namespaces e APIs usados no código do aplicativo.
O caminho para 64 bits
As novas APIs unificadas são necessárias para oferecer suporte a arquiteturas de dispositivos de 64 bits a partir de um aplicativo móvel Xamarin.iOS. A partir de 1º de fevereiro de 2015, a Apple exige que todos os novos envios de aplicativos para a iTunes App Store suportem arquiteturas de 64 bits.
O Xamarin fornece ferramentas para o Visual Studio para Mac e o Visual Studio para automatizar o processo de migração da API Clássica para a API Unificada ou você pode converter os arquivos de projeto manualmente. Embora o uso do ferramental automático seja altamente sugerido, este artigo abordará ambos os métodos.
Antes de começar...
Antes de atualizar o código existente para a API unificada, é altamente recomendável eliminar todos os avisos de compilação. Muitos avisos na API Clássica se tornarão erros quando você migrar para o Unified. Corrigi-los antes de iniciar é mais fácil porque as mensagens do compilador da API clássica geralmente fornecem dicas sobre o que atualizar.
Atualização automatizada
Depois que os avisos forem corrigidos, selecione um projeto iOS existente no Visual Studio para Mac ou Visual Studio e escolha Migrar para a API unificada do Xamarin.iOS no menu Projeto . Por exemplo:
Você precisará concordar com este aviso antes que a migração automatizada seja executada (obviamente, você deve garantir que tenha backups/controle do código-fonte antes de embarcar nesta aventura):
A ferramenta basicamente automatiza todas as etapas descritas na seção Atualizar manualmente apresentada abaixo e é o método sugerido para converter um projeto Xamarin.iOS existente para a API unificada.
Etapas para atualizar manualmente
Novamente, depois que os avisos forem corrigidos, siga estas etapas para atualizar manualmente os aplicativos Xamarin.iOS para usar a nova API unificada:
1. Atualizar o tipo de projeto & Build Target
Altere o sabor do projeto em seus arquivos csproj de 6BC8ED88-2882-458C-8E55-DFD12B67127B
para FEACFBD2-3405-455C-9665-78FE426C6842
. Edite o arquivo csproj em um editor de texto, substituindo o primeiro item no <ProjectTypeGuids>
elemento conforme mostrado:
Altere o elemento Import que contém Xamarin.MonoTouch.CSharp.targets
para Xamarin.iOS.CSharp.targets
conforme mostrado:
2. Atualizar referências do projeto
Expanda o nó Referências do projeto de aplicativo iOS. Ele mostrará inicialmente uma referência *broken-monotouch semelhante a esta captura de tela (porque acabamos de mudar o tipo de projeto):
Clique com o botão direito do mouse no projeto do aplicativo iOS para Editar referências, clique na referência monotouch e exclua-a usando o botão vermelho "X".
Agora role até o final da lista de referências e marque o assembly Xamarin.iOS .
Pressione OK para salvar as alterações de referências do projeto.
3. Remover MonoTouch de namespaces
Remova o prefixo MonoTouch de namespaces em using
instruções ou onde quer que um nome de classe tenha sido totalmente qualificado (por exemplo, MonoTouch.UIKit
torna-se apenas UIKit
).
4. Remapear tipos
Foram introduzidos tipos nativos que substituem alguns tipos que foram usados anteriormente, como instâncias de System.Drawing.RectangleF
com CoreGraphics.CGRect
(por exemplo). A lista completa de tipos pode ser encontrada na página de tipos nativos.
5. Corrigir substituições de método
Alguns UIKit
métodos tiveram sua assinatura alterada para usar os novos tipos nativos (como nint
). Se as subclasses personalizadas substituírem esses métodos, as assinaturas não corresponderão mais e resultarão em erros. Corrija essas substituições de método alterando a subclasse para corresponder à nova assinatura usando tipos nativos.
Os exemplos incluem alterar public override int NumberOfSections (UITableView tableView)
para retornar nint
e alterar o tipo de retorno e os tipos de parâmetro em public override int RowsInSection (UITableView tableView, int section)
nint
.
Considerações
As considerações a seguir devem ser levadas em conta ao converter um projeto Xamarin.iOS existente da API Clássica para a nova API Unificada se esse aplicativo depender de um ou mais Componentes ou Pacotes NuGet.
Componentes
Qualquer componente que você tenha incluído em seu aplicativo também precisará ser atualizado para a API unificada ou você terá um conflito ao tentar compilar. Para qualquer componente incluído, substitua a versão atual por uma nova versão do Xamarin Component Store que ofereça suporte à API Unificada e faça uma compilação limpa. Qualquer componente que ainda não tenha sido convertido pelo autor, exibirá um aviso somente de 32 bits no repositório de componentes.
Suporte do NuGet
Embora tenhamos contribuído com alterações no NuGet para trabalhar com o suporte à API Unificada, não houve uma nova versão do NuGet, portanto, estamos avaliando como fazer com que o NuGet reconheça as novas APIs.
Até lá, assim como os componentes, você precisará alternar qualquer Pacote NuGet incluído em seu projeto para uma versão que ofereça suporte às APIs Unificadas e fazer uma compilação limpa depois.
Importante
Se você tiver um erro no formato "Erro 3 Não é possível incluir 'monotouch.dll' e 'Xamarin.iOS.dll' no mesmo projeto Xamarin.iOS - 'Xamarin.iOS.dll' é referenciado explicitamente, enquanto 'monotouch.dll' é referenciado por 'xxx, Version=0.0.000, Culture=neutral, PublicKeyToken=null'" depois de converter seu aplicativo para as APIs unificadas, geralmente é devido a ter um componente ou Pacote NuGet no projeto que não foi atualizado para a API unificada. Você precisará remover o componente/NuGet existente, atualizar para uma versão que ofereça suporte às APIs Unificadas e fazer uma compilação limpa.
Ativando compilações de 64 bits de aplicativos Xamarin.iOS
Para um aplicativo móvel Xamarin.iOS que foi convertido para a API unificada, o desenvolvedor ainda precisa habilitar a criação do aplicativo para máquinas de 64 bits a partir das Opções do aplicativo. Consulte o documento Habilitando compilações de 64 bits de aplicativos Xamarin.iOS do documento Considerações sobre a plataforma de 32/64 bits para obter instruções detalhadas sobre como habilitar compilações de 64 bits.
Finalização
Independentemente de você optar ou não por usar o método automático ou manual para converter seu aplicativo Xamarin.iOS das APIs Clássicas para as APIs Unificadas, há várias instâncias que exigirão intervenção manual adicional. Consulte nossas Dicas para atualizar o código para o documento da API unificada para problemas conhecidos e soluções alternativas.