Sdílet prostřednictvím


Návody migrovat aplikaci na Xamarin.Forms verzi 5.0?

Xamarin.Forms 5.0 obsahuje následující zásadní změny:

  • Expander přesunula se do sady nástrojů Xamarin Community Toolkit. Další informace naleznete v tématu Funkce přesunuté z Xamarin.Forms.
  • MediaElement přesunula se do sady nástrojů Xamarin Community Toolkit. Další informace naleznete v tématu Funkce přesunuté z Xamarin.Forms.
  • Aplikace DataPages a přidružené projekty byly odebrány z Xamarin.Formsaplikace .
  • MasterDetailPage byl přejmenován na FlyoutPage. Podobně byl MasterBehavior výčet přejmenován na FlyoutLayoutBehavior.
  • Odkazy, které UIWebView se mají odebrat z Xamarin.Forms iOSu.
  • Byla odebrána podpora pro Visual Studio 2017.
  • XFCorePostProcessor.Tasks byl odebrán. Tento projekt vložil IL za účelem zachování Xamarin.Forms kompatibility 2.5.

Kromě toho budou projekty Androidu a UPW vytvořené pomocí Xamarin.Forms verze 5.0 vyžadovat aktualizaci.

Důležité

Při aktualizaci aplikace na Xamarin.Forms verzi 5.0 se ujistěte, že aktualizujete každý projekt, který odkazuje na Xamarin.Forms balíček NuGet na identickou verzi.

Android

Projekty Android vytvořené pomocí Xamarin.Forms verze 5.0 vyžadují, abyste do vývojového prostředí nainstalovali platformu AndroidX (Android 10.0). Toho lze dosáhnout pomocí správce sady Android SDK. Další informace o AndroidX naleznete v tématu AndroidX migrace v Xamarin.Forms.

Projekty androidu pak budou vyžadovat správné sestavení několika aktualizací.

Minimální targetFrameworkVersion

Xamarin.Forms 5.0 vyžaduje minimální cílovou verzi rozhraní 10.0 (AndroidX) pro projekty Android. Verzi cílové architektury je možné nastavit v sadě Visual Studio nebo v souboru .csproj pro Android:

<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>

Pokud tento minimální požadavek není splněn, vytvoří se chyba sestavení:

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.

Minimální targetSDKVersion

AndroidX vyžaduje, aby manifest Androidu targetSdkVersion nastavil 29+:

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

Pokud to neuděláte, způsobí targetSdkVersion to, že se nastaví na minSdkVersionhodnotu . Kromě toho se v některých případech Android.Views.InflateException vytvoří, pokud targetSdkVersion není správně nastavená:

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

Poznámka:

V sadě Visual Studio 2019 se manifest Androidu automaticky aktualizuje, aby určil targetSdkVersion rozhraní API 29, pokud je verze cílové architektury nastavená na verzi v10.0.

Automatická migrace na AndroidX

Pokud projekt Androidu odkazuje na jakékoli knihovny podpory Androidu, ať už jako přímé závislosti nebo přechodné závislosti, tyto závislosti a vazby knihovny se během procesu sestavení automaticky prohodí se závislostmi AndroidX. Další informace o automatické migraci AndroidX naleznete v tématu Automatická migrace v Xamarin.Forms.

Ruční migrace na AndroidX

Pokud váš projekt pro Android nemá přímé nebo přechodné závislosti v knihovnách podpory Androidu, ale přesto se pokouší využívat typy knihoven prostřednictvím kódu, budete muset aplikaci do AndroidX migrovat ručně. Toho lze dosáhnout pomocí typů AndroidX a odebráním všech souborů AXML, které jste nepřizpůsobili.

Tip

Ruční migrace na AndroidX způsobí nejrychlejší proces sestavení pro vaši aplikaci.

Použití typů AndroidX

AndroidX nahrazuje knihovny podpory Androidu, takže všechny odkazy na typy knihoven podpory Androidu musí být nahrazeny odkazy na typy AndroidX.

Toho lze dosáhnout aktualizací using příkazů tak, aby používaly AndroidX obory názvů, nikoli Android.Support obory názvů. Následující tabulka uvádí některé běžné změny oboru názvů při přechodu z podpůrných knihoven Androidu na AndroidX:

Obor názvů knihovny podpory pro Android Obor názvů 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

Úplný seznam mapování tříd z podpůrných knihoven na AndroidX najdete v tématu Mapování tříd AndroidX na github.com. Úplný seznam mapování sestavení z podpůrných knihoven na AndroidX najdete v tématu Sestavení AndroidX na github.com

Odebrání souborů AXML

Z projektu androidu byste měli odstranit všechny soubory AXML za předpokladu, že nepoužívá přizpůsobené soubory AXML. Po odstranění by se z vaší MainActivity třídy měly odebrat následující řádky:

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

Důležité

Projekty androidu s přizpůsobenými soubory AXML by se měly aktualizovat tak, aby tyto soubory používaly typy AndroidX.

UWP

Xamarin.Forms 5.0 doporučuje cílovou verzi >platformy = 10.0.18362.0 pro projekty UPW. Cílovou verzi platformy můžete nastavit v sadě Visual Studio nebo v souboru .csproj pro UPW:

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

Pokud váš projekt UPW používá nižší cílovou verzi platformy, vytvoří se upozornění na sestavení.