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 naFlyoutPage
. Podobně bylMasterBehavior
výčet přejmenován naFlyoutLayoutBehavior
.- 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 minSdkVersion
hodnotu . 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í.