Wiem, androidx i zależność od wsparcia powodują błąd multidex. Nie możemy jednocześnie korzystać z androidx i androida. Więc całkowicie przenoszę się na androidx. ale jedna z moich bibliotek zależności korzystała z obsługi Androida "lottie".
Co możemy zrobić w powyższej sytuacji? Czy powinienem usunąć „lottie” z mojego projektu.
poniżej jest mój stopień
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
źródło
Ręczne dodawanie
android.useAndroidX=true
iandroid.enableJetifier=true
utrudnianie pracy. Ponieważ rzuca jakiś błąd lubSuggestion: add 'tools:replace="android:appComponentFactory"' to <application>
Aby włączyć Jet-fire w projekcie, istnieje opcja w Android Studio
Wybierz swój projekt ---> Kliknij prawym przyciskiem myszy
aplikacja ----> Refaktoryzuj ----> Migracja do AndroidX
Pokazano na poniższym obrazku: -
Po kliknięciu Migrate to AndroidX .
Poprosi o potwierdzenie i kopię zapasową projektu.
I ostatni krok poprosi Cię o dokonanie refaktoryzacji.
Po wykonaniu Refactor sprawdź, czy gradle.properties ma
android.useAndroidX=true
iandroid.enableJetifier=true
. Jeśli tak nie jest, dodaj te dwie linie do pliku gradle.properties:android.useAndroidX=true android.enableJetifier=true
źródło
Nie musisz się martwić
Po prostu włącz Jetifier w swoim projekcie .
Otwórz
gradle.properties
i dodaj poniżej dwie linie.android.enableJetifier=true android.useAndroidX=true
Konwertuje wszystkie biblioteki obsługi Twojej zależności na AndroidX w czasie wykonywania (możesz mieć błędy czasu kompilacji, ale aplikacja będzie działać).
źródło
android.enableJetifier=true
jeśli tak się stało, myślę, że ręczne użyciejetifier-standalone
do aar innej firmy może działać.Dodaj linie w pliku gradle.properties
android.useAndroidX=true android.enableJetifier=true
Zobacz także https://developer.android.com/jetpack/androidx
źródło
API 29. + wykorzystanie bibliotek AndroidX. Jeśli używasz API 29. +, nie możesz ich usunąć. Jeśli chcesz usunąć AndroidX, musisz usunąć całe 29. + API ze swojego SDK:
To zadziała dobrze.
źródło
Użyłem tych dwóch wierszy kodu w tagu aplikacji w pliku manifest.xml i zadziałało.
tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"
Źródło: https://github.com/android/android-ktx/issues/576#issuecomment-437145192
źródło
Dodałem poniżej dwie linie w pliku gradle.properties
android.useAndroidX=true android.enableJetifier=true
wtedy otrzymałem następujący błąd
error: package android.support.v7.app does not exist import android.support.v7.app.AlertDialog; ^
Usunąłem import i dodałem poniższy wiersz
import static android.app.AlertDialog.*;
A klasy, które są rozszerzone z AppCompactActivity, dodały poniższy wiersz. (W przypadku tych błędów wystarczy nacisnąć alt + enter w Android Studio, co zaimportuje odpowiednią bibliotekę. W ten sposób możesz rozwiązać wszystkie błędy)
import androidx.appcompat.app.AppCompatActivity;
W pliku xml, jeśli użyłeś żadnego
<android.support.v7.widget.Toolbar
zamień na
androidx.appcompat.widget.Toolbar
następnie w swoim kodzie java
import androidx.appcompat.widget.Toolbar;
źródło
Jeśli Twój projekt nie jest AndroidX (oznacza Appcompat) i otrzymałeś ten błąd, spróbuj obniżyć wersję zależności, która powoduje ten błąd, w moim przypadku play-services-location ("implementacja" com.google.android.gms: play-services-location : 17.0.0 '"), rozwiązałem problem, przechodząc na com.google.android.gms: play-services-location: 16.0.0'
źródło
Miałem taki problem wcześniej, to był plik gradle.properties nie istnieje, tylko gradle.properties.txt, więc poszedłem do folderu mojego projektu i skopiowałem i wkleiłem plik gradle.properties.txt, ale bez niego. txt to w końcu zadziałało.
źródło
Skomentuj tę linię
gradle.properties
źródło