Migrazione di AndroidX in Xamarin.Forms

AndroidX sostituisce la libreria di supporto Android. Questo articolo spiega perché AndroidX esiste, come influisce Xamarin.Formse come eseguire la migrazione dell'applicazione per usare le librerie AndroidX.

Importante

Se si esegue la migrazione di un'app alla Xamarin.Forms versione 5.0, vedere Ricerca per categorie eseguire la migrazione dell'app alla Xamarin.Forms versione 5.0?

Cronologia di AndroidX

La libreria di supporto Android è stata creata per fornire funzionalità più recenti nelle versioni precedenti di Android. Si tratta di un livello di compatibilità che consente agli sviluppatori di usare funzionalità che potrebbero non esistere in tutte le versioni del sistema operativo Android e hanno fallback normale per le versioni precedenti. La libreria di supporto include anche classi helper, strumenti di debug e utilità e classi sofisticate che dipendono da altre classi della libreria di supporto per funzionare.

Anche se la libreria di supporto era originariamente un singolo binario, è cresciuta e si è evoluta in una suite di librerie, che sono quasi essenziali per lo sviluppo di app moderne. Queste sono alcune funzionalità comunemente usate dalla libreria di supporto:

  • Classe Fragment di supporto.
  • Oggetto RecyclerViewutilizzato per la gestione di elenchi lunghi.
  • Supporto multidex per le app con oltre 65.536 metodi.
  • Classe ActivityCompat.

AndroidX è una sostituzione della libreria di supporto, che non è più gestita. Tutto lo sviluppo di nuove librerie verrà eseguito nella libreria AndroidX. AndroidX è una libreria riprogettata che usa il controllo delle versioni semantiche, i nomi dei pacchetti più chiari e un supporto migliore per i modelli di architettura delle applicazioni comuni. AndroidX versione 1.0.0 è l'equivalente binario della libreria di supporto versione 28.0.0. Per un elenco completo dei mapping delle classi da Libreria di supporto ad AndroidX, vedere Mapping delle classi della libreria di supporto su developer.android.com.

Google ha creato un processo di migrazione denominato Jetifier con AndroidX. Jetifier esamina il bytecode jar durante il processo di compilazione e esegue nuovamente il mapping dei riferimenti alla libreria di supporto, sia nel codice dell'app che nelle dipendenze, nell'equivalente AndroidX.

In un'app Xamarin.Forms , proprio come in un'app Java Android, è necessario eseguire la migrazione delle dipendenze jar ad AndroidX. Tuttavia, è necessario eseguire anche la migrazione delle associazioni Xamarin per puntare ai file JAR corretti e sottostanti. Xamarin.Forms aggiunta del supporto per la migrazione automatica di AndroidX nella versione 4.5.

Per altre informazioni su AndroidX, vedere Panoramica di AndroidX su developer.android.com.

Migrazione automatica in Xamarin.Forms

Per eseguire automaticamente la migrazione ad AndroidX, un Xamarin.Forms progetto di piattaforma Android deve:

  • Api Android di destinazione versione 29 o successiva.
  • Usare Xamarin.Forms la versione 4.5 o successiva.
  • Avere dipendenze dirette o transitive nelle librerie di supporto Android.

Dopo aver confermato queste impostazioni nel progetto, compilare l'app Android in Visual Studio 2019. Durante il processo di compilazione, il linguaggio intermedio (IL) viene controllato e le dipendenze e le associazioni della libreria di supporto vengono scambiate con le dipendenze AndroidX. Se l'applicazione ha tutte le dipendenze AndroidX necessarie per la compilazione, non si noteranno differenze nel processo di compilazione.

Importante

La migrazione manuale ad AndroidX comporterà il processo di compilazione più rapido per l'app ed è l'approccio consigliato per la migrazione di AndroidX. Ciò comporta la sostituzione delle dipendenze della libreria di supporto con le dipendenze AndroidX e l'aggiornamento del codice per l'utilizzo dei tipi AndroidX. Per altre informazioni, vedere Usare i tipi AndroidX.

Se vengono rilevate dipendenze AndroidX che non fanno parte del progetto, viene segnalato un errore di compilazione che indica quali pacchetti AndroidX mancano. Di seguito è riportato un esempio di errore di compilazione:

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" />

I pacchetti NuGet mancanti possono essere installati tramite il Gestione pacchetti NuGet in Visual Studio o installati modificando il file con estensione csproj Android per includere gli PackageReference elementi XML elencati nell'errore.

Una volta risolti i pacchetti mancanti, la ricompilazione del progetto carica i pacchetti mancanti e il progetto viene compilato usando le dipendenze AndroidX anziché le dipendenze della libreria di supporto.

Nota

Se il progetto e le dipendenze del progetto, non fare riferimento alle librerie di supporto Android, il processo di migrazione non esegue alcuna operazione e non viene eseguito.