Risposte:
Google I / O di quest'anno (18), Google ha annunciato Jetpack che è un set / raccolta di librerie per semplificare la vita degli sviluppatori.
Jetpack include componenti dell'architettura Android introdotti in precedenza (ViewModel, Room, Paging, LiveData ecc.) Oltre a componenti dell'architettura appena introdotti come WorkManager, Navigation. Oltre a questo Jetpack ha anche altri set di librerie come AndroidX, AndroidKTX ecc.
AndroidX è una nuova struttura del pacchetto per le librerie di supporto Android come supporto, associazione dati, design ecc.
ad esempio, ora gli sviluppatori di reparti useranno androidx.databinding. invece di android.databinding. durante l'importazione di librerie nei nostri progetti
Ciò consente a Google di aggiungere SemVer o Semantic Versioning nei pacchetti della libreria. Per gli sviluppatori, questo significa che non dobbiamo utilizzare la stessa versione della libreria di supporto per tutte le librerie di supporto. Ogni supporto o per meglio dire libreria AndroidX manterrà il proprio controllo delle versioni.
Un altro vantaggio per gli sviluppatori è che non dobbiamo preoccuparci di mantenere la stessa versione per tutte le librerie di supporto nel nostro progetto.
A proposito di Jetifier, converte tutti i pacchetti di supporto della dipendenza in fase di compilazione. Come da documentazione ufficiale di Jetifier
Lo strumento Jetifier migra le librerie dipendenti dalla libreria di supporto per fare affidamento invece sui pacchetti AndroidX equivalenti. Lo strumento ti consente di migrare direttamente una singola libreria, invece di utilizzare il plug-in Gradle Android in bundle con Android Studio.
Per utilizzare AndroidX in un progetto, dobbiamo impostare targetSdkVersion per il nostro progetto su 28 e aggiungere le seguenti 2 righe nel file gradle.properties .
android.useAndroidX=true
android.enableJetifier=true
Spero che questo risponda alla tua domanda.
MODIFICARE
Questo collegamento ha la mappatura di tutti i componenti della libreria di supporto con la loro controparte AndroidX.
Si prega inoltre di fare riferimento a questo blog per una spiegazione dettagliata su AndroidX
Supponendo che tu abbia familiarità con AndroidX
. In caso contrario, vedere @ questo post .
Jetifier
convertirà automaticamentesupport libraries
tutte le tue dipendenzeAndroidX
, se non lo imposti, iltrue
tuo progetto avrà sia il supporto ( deprecato dopo la versione 28.0.0 ) che il pacchetto AndroidX , che è ridondante.
Se hai PhotoView.java
nella tua dipendenza. Che utilizza la libreria di supporto AppCompatImageView
.
import android.support.v7.widget.AppCompatImageView;
Questa classe è stata spostata ora nel androidx
pacchetto, quindi come PhotoView
otterrà androidx AppCompatImageView
? E l'app funziona ancora nel dispositivo.
Chi ha fatto questa corsa?
Jetifier , che converte tutti i pacchetti di supporto della dipendenza in fase di compilazione.
Jetifier si convertirà android.support.v7.widget.AppCompatImageView
in androidx.appcompat.widget.AppCompatImageView
durante la creazione del progetto.
L'abilitazione di Jetifier è importante quando esegui la migrazione dalle librerie di supporto ad AndroidX .
Vedi questo post per saperne di più su AndroidX.
Il codice potrebbe mostrare errori in fase di compilazione dopo aver abilitato Jetifier durante l'utilizzo delle classi di dipendenza. che si può rimuovere eliminando .idea
, .gradle
e progetto di re-sincronizzazione.
Jetifier aiuta a migrare un progetto Android su AndroidX .
Jetifier aiuta a rendere la libreria di terze parti compatibile con il tuo progetto AndroidX.
Se non utilizzi alcuna libreria di terze parti nel tuo progetto Android, non è necessario utilizzare Jetifier perché Jetifier aiuta solo a "rendere la libreria di terze parti" compatibile con il tuo progetto nel caso in cui esegui la migrazione ad AndroidX. Quindi, per fare in modo che il tuo progetto utilizzi Jetifier, scrivi di seguito il codice in gradle.properties .
android.enableJetifier=true
android.useAndroidX=true
Se non stai migrando ad AndroidX e utilizzi il modo precedente di utilizzare le librerie Android (ad esempio: com.android.support ), allora queste librerie di terze parti non devono essere rese compatibili poiché queste librerie di terze parti sono già compatibili con il modo precedente di utilizzando le librerie Android. In tal caso, non è necessario utilizzare Jetifier, quindi ora non è necessario scrivere le righe fornite sopra o puoi semplicemente scrivere come di seguito per modificare i valori in futuro per passare ad androidx: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
Il jetifier è un pratico strumento che migra automaticamente il vostro dependencies
per AndroidX
al momento della compilazione. Senza di essa, avresti bisogno di ogni dipendenza che utilizzi per avere una versione di AndroidX prima di poter migrare, e questo probabilmente non accadrà per un po 'di tempo.
C'è una limitazione importante da notare: il jetifier funziona solo su artefatti confezionati. Non funziona sul tuo codice sorgente, che dovresti aggiornare tu stesso
per abilitare AndroidX, devi aggiungere 2 flag al tuo gradle.properties
file. Il primo flag indica al plug-in Android di utilizzare i AndroidX
pacchetti al posto di AppCompat
, e il secondo flag abiliterà Jetifier
:
android.useAndroidX=true
android.enableJetifier=true
Quando questo flag è impostato su true, il plug-in Android migra automaticamente le librerie di terze parti esistenti per utilizzare le dipendenze di AndroidX riscrivendo i loro binari. Il flag è false per impostazione predefinita se non è specificato.
È utile per la compatibilità. Quando un consumatore utilizza androidX
e un produttore utilizza support
. Ad esempio, quando il tuo progetto su AndroidX
desidera utilizzare una dipendenza che utilizza support library
invece di AndroidX
[Esempio]
Aggiungi queste due righe android.useAndroidX = true
android.enableJetifier = true
in buid.gradle Ha funzionato per me
implementation "com.commonsware.cwac:document:0.3.0"
nel tuo filedependencies
. Quella versione della libreria ha una dipendenza transitiva dacom.android.support:support-annotations:27.0.2
. Tuttavia, si desidera utilizzareandroidx.annotation:annotation
come parte dell'utilizzo di altre dipendenze AndroidX. Jetifier si aggiornerà in qualche modocom.commonsware.cwac:document
da usareandroidx.annotation:annotation
.