Co to jest Jetifier? Na przykład, aby utworzyć nowy projekt przy użyciu zależności z pakietu Androidx, ten nowy projekt musi dodać następujący wiersz do pliku gradle.properties :
android.enableJetifier=true
Więc co to znaczy - „włącz jetifier”?
Odpowiedzi:
Tegoroczne Google I / O (18), Google ogłosiło Jetpack, który jest zestawem / zbiorem bibliotek ułatwiających życie programistom.
Jetpack zawiera wcześniej wprowadzone komponenty architektury Androida (ViewModel, Room, Paging, LiveData itp.), A także nowo wprowadzone komponenty architektury, takie jak WorkManager, Navigation. Oprócz tego Jetpack ma również inny zestaw bibliotek, takich jak AndroidX, AndroidKTX itp.
AndroidX to nowa struktura pakietów dla bibliotek obsługujących Androida, takich jak wsparcie, wiązanie danych, projektowanie itp.
np. teraz na oddziałach programiści będą używać androidx.databinding. zamiast android.databinding. podczas importu bibliotek w naszych projektach
Dzięki temu Google może dodać SemVer lub Semantic Versioning do tych pakietów bibliotek. Dla programistów oznacza to, że nie musimy używać tej samej wersji biblioteki obsługi dla wszystkich bibliotek obsługi. Każde wsparcie lub lepiej powiedzieć, biblioteka AndroidX będzie utrzymywać własne wersje.
Kolejną zaletą dla programistów jest to, że nie musimy dbać o utrzymanie tej samej wersji dla wszystkich bibliotek wsparcia w naszym projekcie.
O Jetifier, konwertuje wszystkie pakiety wsparcia w czasie kompilacji. Zgodnie z oficjalną dokumentacją Jetifier
Narzędzie Jetifier migruje biblioteki zależne od obsługi, aby zamiast tego polegać na równoważnych pakietach AndroidX. Narzędzie umożliwia bezpośrednią migrację poszczególnych bibliotek zamiast korzystania z wtyczki Android Gradle dołączonej do Android Studio.
Aby użyć AndroidX w projekcie, musimy ustawić targetSdkVersion dla naszego projektu na 28 i dodać kolejne 2 wiersze w pliku gradle.properties .
android.useAndroidX=true
android.enableJetifier=true
Mam nadzieję, że to odpowie na Twoje pytanie.
EDYTOWAĆ
Ten link zawiera mapowanie wszystkich komponentów biblioteki wsparcia z ich częścią licznika AndroidX.
Zapoznaj się również z tym blogiem, aby uzyskać szczegółowe wyjaśnienie dotyczące systemu AndroidX
Zakładając, że znasz AndroidX
. Jeśli nie, zobacz @ ten post .
Jetifier
skonwertujesupport libraries
wszystkie twoje zależności naAndroidX
automatycznie, jeśli nie ustawisz tego na,true
twój projekt będzie miał zarówno wsparcie ( stał się przestarzały po wersji 28.0.0 ), jak i pakiet AndroidX , który jest zbędny.
Jeśli jesteś PhotoView.java
na swoim utrzymaniu. Używa biblioteki wsparcia AppCompatImageView
.
import android.support.v7.widget.AppCompatImageView;
Ta klasa została teraz przeniesiona do androidx
pakietu, więc jak PhotoView
uzyskać Androidx AppCompatImageView
? A aplikacja nadal działa na urządzeniu.
Kto to zrobił?
Jetifier , który konwertuje wszystkie pakiety wsparcia w czasie kompilacji.
Jetifier zmieni się android.support.v7.widget.AppCompatImageView
na androidx.appcompat.widget.AppCompatImageView
podczas budowania projektu.
Włączenie Jetifier jest ważne podczas migracji z bibliotek pomocniczych do AndroidX .
Zobacz ten post, aby dowiedzieć się więcej o AndroidX.
Twój kod może wyświetlać błędy czasu kompilacji po włączeniu Jetifier podczas korzystania z klas zależności. które można usunąć przez usunięcie .idea
, .gradle
a projekt re-sync.
Jetifier pomaga w migracji projektu Android do AndroidX .
Jetifier pomaga w podejmowaniu 3rd party biblioteka zgodne z projektem AndroidX.
Jeśli nie korzystasz z żadnej biblioteki innej firmy w swoim projekcie Android, nie musisz używać Jetifier, ponieważ Jetifier pomaga tylko w „dostosowaniu biblioteki innej firmy” do Twojego projektu w przypadku migracji do AndroidX. Aby Twój projekt korzystał z Jetifier, napisz poniższy kod w gradle.properties .
android.enableJetifier=true
android.useAndroidX=true
Jeśli nie przeprowadzasz migracji do AndroidX i korzystasz z poprzedniego sposobu korzystania z bibliotek systemu Android (np. Com.android.support ), te biblioteki innych firm nie muszą być zgodne, ponieważ te biblioteki innych firm są już zgodne z poprzednim sposobem przy użyciu bibliotek Androida. W takim przypadku nie musisz używać Jetifier, więc teraz nie musisz pisać linii podanych powyżej lub możesz po prostu napisać jak poniżej, aby zmienić wartości w przyszłości, aby przejść do androidx: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
Jetifier to poręczne narzędzie, które automatycznie przenosi swoją dependencies
TO AndroidX
w czasie kompilacji. Bez tego potrzebowałbyś każdej zależności, której używasz, aby mieć wersję AndroidX przed migracją, a to prawdopodobnie nie nastąpi przez jakiś czas.
Należy zwrócić uwagę na ważne ograniczenie: jetifier działa tylko na opakowanych artefaktach. Nie działa na Twoim kodzie źródłowym, który powinieneś zaktualizować samodzielnie
aby włączyć AndroidX, musisz dodać 2 flagi do swojego gradle.properties
pliku. Pierwsza flaga mówi wtyczce Androida, aby używała AndroidX
pakietów zamiast AppCompat
, a druga flaga włączy Jetifier
:
android.useAndroidX=true
android.enableJetifier=true
Gdy ta flaga jest ustawiona na wartość true, wtyczka systemu Android automatycznie migruje istniejące biblioteki innych firm, aby używać zależności systemu AndroidX, przepisując ich pliki binarne. Flaga ma domyślnie wartość false, jeśli nie zostanie określona.
Jest to przydatne ze względu na kompatybilność. Gdy Konsument używa, androidX
a producent używa support
. Na przykład, gdy Twój projekt AndroidX
chce użyć zależności, która używa support library
zamiast AndroidX
[Przykład]
Dodaj te dwie linie android.useAndroidX = true
android.enableJetifier = true
w buid.gradle To zadziałało dla mnie
implementation "com.commonsware.cwac:document:0.3.0"
w swoimdependencies
. Ta wersja biblioteki ma zależność przechodnią odcom.android.support:support-annotations:27.0.2
. Jednak chcesz używaćandroidx.annotation:annotation
w ramach korzystania z innych zależności AndroidX. Jetifier w jakiś sposób zaktualizowałby sięcom.commonsware.cwac:document
do użyciaandroidx.annotation:annotation
.