Compartilhar via


Como fazer migrar meu aplicativo para Xamarin.Forms 5.0?

Xamarin.Forms 5.0 inclui as seguintes alterações interruptivas:

  • Expander foi movido para o Kit de Ferramentas da Comunidade do Xamarin. Para obter mais informações, consulte Recursos movidos de Xamarin.Forms.
  • MediaElement foi movido para o Kit de Ferramentas da Comunidade do Xamarin. Para obter mais informações, consulte Recursos movidos de Xamarin.Forms.
  • DataPages e projetos associados foram removidos do Xamarin.Forms.
  • MasterDetailPage foi renomeado para FlyoutPage. Da mesma forma, a MasterBehavior enumeração foi renomeada para FlyoutLayoutBehavior.
  • Referências a UIWebView serem removidas do Xamarin.Forms no iOS.
  • O suporte para o Visual Studio 2017 foi removido.
  • XFCorePostProcessor.Tasks foi removido. Este projeto injetou IL para manter Xamarin.Forms a compatibilidade 2.5.

Além disso, projetos Android e UWP criados com Xamarin.Forms o 5.0 exigirão atualização.

Importante

Ao atualizar um aplicativo para Xamarin.Forms 5.0, atualize cada projeto que referencie o Xamarin.Forms pacote NuGet para uma versão idêntica.

Android

Os projetos android criados com Xamarin.Forms o 5.0 exigem que você tenha instalado a plataforma AndroidX (Android 10.0) em seu ambiente de desenvolvimento. Isso pode ser feito com o gerenciador do SDK do Android. Para obter mais informações sobre o AndroidX, consulte Migração do AndroidX no Xamarin.Forms.

Em seguida, os projetos do Android exigirão várias atualizações para serem compilados corretamente.

TargetFrameworkVersion mínimo

Xamarin.Forms A versão 5.0 requer uma versão mínima da estrutura de destino 10.0 (AndroidX) para projetos Android. A versão da estrutura de destino pode ser definida no Visual Studio ou no arquivo .csproj do Android:

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Um erro de build será produzido se esse requisito mínimo não for atendido:

error XF005: The $(TargetFrameworkVersion) for MyProject.Android (v9.0) is less than the minimum required $(TargetFrameworkVersion) for Xamarin.Forms (10.0). You need to increase the $(TargetFrameworkVersion) for MyProject.Android.

TargetSDKVersion mínimo

O AndroidX requer que o manifesto do Android defina o targetSdkVersion como 29+:

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />

A falha ao fazer isso fará com que o targetSdkVersion seja definido como o minSdkVersion. Além disso, em algumas circunstâncias, um Android.Views.InflateException será produzido se o targetSdkVersion não estiver definido corretamente:

Android.View.InflateException has been thrown.

Binary XML file line #1 in com.companyname.myproject:layout/toolbar: Binary XML file line #1 in com.companyname.myproject:/layout/toolbar: Error inflating class android.support.v7.widget.Toolbar

Observação

No Visual Studio 2019, o manifesto do Android será atualizado automaticamente para especificar um targetSdkVersion da API 29 quando a versão da estrutura de destino for definida como v10.0.

Migração automática para AndroidX

Se o projeto do Android fizer referência a bibliotecas de suporte do Android, como dependências diretas ou dependências transitivas, essas dependências e associações de biblioteca de suporte serão trocadas automaticamente por dependências do AndroidX durante o processo de build. Para obter mais informações sobre a migração automática do AndroidX, consulte Migração automática no Xamarin.Forms.

Migração manual para AndroidX

Se seu projeto Android não tiver dependências diretas ou transitivas em bibliotecas de suporte do Android, mas ainda tentar consumir tipos de biblioteca de suporte por meio de código, você precisará migrar manualmente seu aplicativo para o AndroidX. Isso pode ser feito usando tipos AndroidX e removendo todos os arquivos AXML que você não personalizou.

Dica

A migração manual para o AndroidX resultará no processo de build mais rápido para seu aplicativo.

Usar tipos AndroidX

O AndroidX substitui as bibliotecas de suporte do Android e, portanto, todas as referências aos tipos de biblioteca de suporte do Android devem ser substituídas por referências a tipos AndroidX.

Isso pode ser feito atualizando suas using instruções para usar AndroidX namespaces, em vez de Android.Support namespaces. A tabela a seguir lista algumas das alterações comuns de namespace ao migrar das bibliotecas de suporte do Android para o AndroidX:

Namespace da biblioteca de suporte do Android Namespace do AndroidX
Android.Support.V4.App AndroidX.Core.App
Android.Support.V4.Content AndroidX.Core.Content
Android.Support.V4.App AndroidX.Fragment.App
Android.Support.V7.App AndroidX.AppCompat.App
Android.Support.V7.Widget AndroidX.AppCompat.Widget

Para obter uma lista completa de mapeamentos de classe de bibliotecas de suporte para AndroidX, consulte Mapeamentos de classe AndroidX em github.com. Para obter uma lista completa de mapeamentos de assembly de bibliotecas de suporte para AndroidX, consulte Assemblies AndroidX no github.com

Remover arquivos AXML

Você deve excluir todos os arquivos AXML do seu projeto Android, desde que ele não use arquivos AXML personalizados. Após a exclusão, as seguintes linhas devem ser removidas da sua MainActivity classe:

TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;

Importante

Projetos Android com arquivos AXML personalizados devem ser atualizados para que esses arquivos usem tipos AndroidX.

UWP

Xamarin.Forms 5.0 recomenda uma versão de plataforma de destino de >= 10.0.18362.0 para projetos UWP. A versão da plataforma de destino pode ser definida no Visual Studio ou no arquivo .csproj UWP:

<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>

Um aviso de build será produzido se o projeto UWP usar uma versão de plataforma de destino inferior.