AndroidX-Migration in Xamarin.Forms

AndroidX ersetzt die Android-Supportbibliothek. In diesem Artikel wird erläutert, warum AndroidX vorhanden ist, wie sich dies auswirkt Xamarin.Formsund wie Sie Ihre Anwendung migrieren, um die AndroidX-Bibliotheken zu verwenden.

Wichtig

Wenn Sie eine App zu Xamarin.Forms 5.0 migrieren, lesen Sie Gewusst wie Migrieren meiner App zu Xamarin.Forms 5.0?.

Verlauf von AndroidX

Die Android-Supportbibliothek wurde erstellt, um neuere Features in älteren Android-Versionen bereitzustellen. Es handelt sich um eine Kompatibilitätsebene, die es Entwicklern ermöglicht, Funktionen zu verwenden, die möglicherweise nicht auf allen Versionen des Android-Betriebssystems vorhanden sind und für ältere Versionen ordnungsgemäße Fallbacks aufweisen. Die Supportbibliothek enthält auch Komfort- und Hilfsklassen, Debugging- und Hilfsprogramme sowie anspruchsvolle Klassen, die von anderen Supportbibliotheksklassen abhängig sind, um zu funktionieren.

Während die Supportbibliothek ursprünglich eine einzelne Binärdatei war, hat sie sich zu einer Suite von Bibliotheken entwickelt, die für die moderne App-Entwicklung fast unerlässlich sind. Dies sind einige häufig verwendete Features aus der Supportbibliothek:

  • Die Fragment Supportklasse.
  • Der RecyclerView, der zum Verwalten langer Listen verwendet wird.
  • Multidexunterstützung für Apps mit über 65.536 Methoden.
  • Die ActivityCompat-Klasse.

AndroidX ist ein Ersatz für die Supportbibliothek, die nicht mehr beibehalten wird . Die gesamte Entwicklung neuer Bibliotheken erfolgt in der AndroidX-Bibliothek. AndroidX ist eine neu gestaltete Bibliothek, die semantische Versionsverwaltung, klarere Paketnamen und bessere Unterstützung für gängige Anwendungsarchitekturmuster verwendet. AndroidX Version 1.0.0 ist das binäre Äquivalent zur Supportbibliothek Version 28.0.0. Eine vollständige Liste der Klassenzuordnungen von der Supportbibliothek zu AndroidX finden Sie unter Klassenzuordnungen der Supportbibliothek auf developer.android.com.

Google hat einen Migrationsprozess namens Jetifier mit AndroidX erstellt. Der Jetifier überprüft den JAR-Bytecode während des Buildprozesses und ordnet Verweise auf die Supportbibliothek sowohl im App-Code als auch in Abhängigkeiten ihrem AndroidX-Äquivalent zu.

In einer Xamarin.Forms App müssen genau wie in einer Android Java-App die JAR-Abhängigkeiten zu AndroidX migriert werden. Die Xamarin-Bindungen müssen jedoch auch migriert werden, um auf die richtigen, zugrunde liegenden JAR-Dateien zu verweisen. Xamarin.Forms Unterstützung für die automatische AndroidX-Migration in Version 4.5 hinzugefügt.

Weitere Informationen zu AndroidX finden Sie unter AndroidX overview on developer.android.com.

Automatische Migration in Xamarin.Forms

Für die automatische Migration zu AndroidX muss ein Xamarin.Forms Android-Plattformprojekt Folgendes ausführen:

  • Android-API-Zielversion 29 oder höher.
  • Verwenden Sie Xamarin.Forms Version 4.5 oder höher.
  • Sie verfügen über direkte oder transitive Abhängigkeiten von Android-Unterstützungsbibliotheken.

Nachdem Sie diese Einstellungen in Ihrem Projekt bestätigt haben, erstellen Sie die Android-App in Visual Studio 2019. Während des Buildvorgangs wird die Intermediate Language (IL) überprüft, und Die Abhängigkeiten und Bindungen der Supportbibliothek werden durch AndroidX-Abhängigkeiten ausgetauscht. Wenn Ihre Anwendung über alle androidX-Abhängigkeiten verfügt, die zum Erstellen erforderlich sind, werden Sie keine Unterschiede im Buildprozess feststellen.

Wichtig

Die manuelle Migration zu AndroidX führt zu einem schnellsten Buildprozess für Ihre App und ist der empfohlene Ansatz für die AndroidX-Migration. Dies umfasst das Ersetzen von Abhängigkeiten von Supportbibliotheken durch AndroidX-Abhängigkeiten und das Aktualisieren Ihres Codes, um AndroidX-Typen zu nutzen. Weitere Informationen finden Sie unter Verwenden von AndroidX-Typen.

Wenn AndroidX-Abhängigkeiten erkannt werden, die nicht Teil des Projekts sind, wird ein Buildfehler gemeldet, der angibt, welche AndroidX-Pakete fehlen. Ein Beispiel für einen Buildfehler ist unten dargestellt:

Could not find 37 AndroidX assemblies, make sure to install the following NuGet packages:
- Xamarin.AndroidX.Lifecycle.LiveData
- Xamarin.AndroidX.Browser
- Xamarin.Google.Android.Material
- Xamarin.AndroidX.Legacy.Supportv4
You can also copy and paste the following snippit into your .csproj file:
 <PackageReference Include="Xamarin.AndroidX.Lifecycle.LiveData" Version="2.1.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Browser" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.Google.Android.Material" Version="1.0.0-rc1" />
 <PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0-rc1" />

Die fehlenden NuGet-Pakete können entweder über den NuGet-Paket-Manager in Visual Studio installiert werden, oder indem Sie Ihre Android CSPROJ-Datei so bearbeiten, dass sie die PackageReference im Fehler aufgeführten XML-Elemente enthält.

Sobald die fehlenden Pakete aufgelöst wurden, lädt das Neuerstellen des Projekts die fehlenden Pakete, und Ihr Projekt wird mithilfe von AndroidX-Abhängigkeiten anstelle von Supportbibliotheksabhängigkeiten kompiliert.

Hinweis

Wenn Ihr Projekt und Ihre Projektabhängigkeiten nicht auf Android-Supportbibliotheken verweisen, führt der Migrationsprozess nichts aus und wird nicht ausgeführt.