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 :
IIRC, Jetifier to nieudokumentowany fragment technologii Googly, który ma automatycznie konwertować zależności przechodnie, aby korzystały z bibliotek AndroidX. Na przykład załóżmy, że masz implementation "com.commonsware.cwac:document:0.3.0"w swoim dependencies. Ta wersja biblioteki ma zależność przechodnią od com.android.support:support-annotations:27.0.2. Jednak chcesz używać androidx.annotation:annotationw ramach korzystania z innych zależności AndroidX. Jetifier w jakiś sposób zaktualizowałby się com.commonsware.cwac:documentdo użycia androidx.annotation:annotation.
CommonsWare
Odpowiedzi:
70
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 .
Tak naprawdę nie odpowiadasz na pytanie „Co to jest Jetifier?”, Tylko mówisz o AndroidX i Jetpack.
David Miguel
2
@DavidMiguel Udzieliłem odpowiedzi na główne zadane pytanie, co to znaczy - „włącz jetifier” ?. Chociaż jeśli uważasz, że moja odpowiedź jest częściowa, odpowiednio ją zaktualizuję.
silwar
73
Zakładając, że znasz AndroidX. Jeśli nie, zobacz @ ten post .
Jetifierskonwertuje support librarieswszystkie twoje zależności na AndroidXautomatycznie, jeśli nie ustawisz tego na, truetwó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.
Na przykład
Jeśli jesteś PhotoView.javana swoim utrzymaniu. Używa biblioteki wsparcia AppCompatImageView.
Zobacz ten post, aby dowiedzieć się więcej o AndroidX.
Informacje
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, .gradlea projekt re-sync.
Możesz pozbyć się błędów podczas kompilacji, usuwając .idea / libraries i ponownie zsynchronizuj Gradle.
Clo Knibbe
1
Myślę, że Jetifier działa w czasie kompilacji, a nie w czasie wykonywania, jak wspomniano tutaj. Możesz użyć android.enableJetifier = true w Gradle lub użyć samodzielnego narzędzia jetifier developer.android.com/studio/command-line/jetifier, aby przejść na androidx. Obie te opcje zastępują nazwy pakietów w czasie kompilacji, więc stare biblioteki obsługi nie są nawet częścią pakietu.
Nishanth
6
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 .
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: -
Jetifier to poręczne narzędzie, które automatycznie przenosi swoją dependenciesTO AndroidXw 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.propertiespliku. Pierwsza flaga mówi wtyczce Androida, aby używała AndroidXpakietów zamiast AppCompat, a druga flaga włączy Jetifier:
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, androidXa producent używa support. Na przykład, gdy Twój projekt AndroidXchce użyć zależności, która używa support libraryzamiast AndroidX[Przykład]
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
.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
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
źródło
Zakładając, że znasz
AndroidX
. Jeśli nie, zobacz @ ten post .Na przykład
Jeśli jesteś
PhotoView.java
na swoim utrzymaniu. Używa biblioteki wsparciaAppCompatImageView
.import android.support.v7.widget.AppCompatImageView;
Ta klasa została teraz przeniesiona do
androidx
pakietu, więc jakPhotoView
uzyskać AndroidxAppCompatImageView
? A aplikacja nadal działa na urządzeniu.Kto to zrobił?
Jetifier zmieni się
android.support.v7.widget.AppCompatImageView
naandroidx.appcompat.widget.AppCompatImageView
podczas budowania projektu.Wniosek
Włączenie Jetifier jest ważne podczas migracji z bibliotek pomocniczych do AndroidX .
Zobacz ten post, aby dowiedzieć się więcej o AndroidX.
Informacje
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.źródło
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
źródło
Jetifier
Jetifier to poręczne narzędzie, które automatycznie przenosi swoją
dependencies
TOAndroidX
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łaAndroidX
pakietów zamiastAppCompat
, a druga flaga włączyJetifier
:android.useAndroidX=true android.enableJetifier=true
Zobacz to , to po, aby zrozumieć więcej o AndroidX
źródło
Z oficjalnego doc
Jest to przydatne ze względu na kompatybilność. Gdy Konsument używa,
androidX
a producent używasupport
. Na przykład, gdy Twój projektAndroidX
chce użyć zależności, która używasupport library
zamiastAndroidX
[Przykład]źródło
Dodaj te dwie linie android.useAndroidX = true
android.enableJetifier = true
w buid.gradle To zadziałało dla mnie
źródło