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 paraFlyoutPage
. Da mesma forma, aMasterBehavior
enumeração foi renomeada paraFlyoutLayoutBehavior
.- 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.