Zaktualizowałem mój android studio to 3.4 canary
i nie mogę już pomyślnie budować z powodu następującego błędu:
The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
Więcej szczegółów:
Caused by: java.lang.RuntimeException: Failed to transform '.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/9.0.0-SNAPSHOT/732f93940c74cf32a7c5ddcc5ef66e53be052352/butterknife-compiler-9.0.0-SNAPSHOT.jar' using Jetifier. Reason: The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.. (Run with --stacktrace for more details.)
Najwyraźniej ma to coś wspólnego Butterknife, androidx and Jetifier
Czy ktoś wie, jak to naprawić?
Odpowiedzi:
Nowa poprawna odpowiedź:
Butterknife 10.0.0 dodał obsługę systemu AndroidX.
dependencies { implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' }
Stara odpowiedź dla Butterknife <10.0.0:
Wypróbuj nóż do masła na czarnej liście z jetifier:
gradle.properties file: android.jetifier.blacklist = butterknife.*\\.jar
Musisz być na wersji 3.3.0-rc1 AGP i 1.3.0 wtyczki Kotlin Gradle:
buildscript { repositories { ... } dependencies { classpath 'com.android.tools.build:gradle:3.3.0-rc01' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.0" classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2' } }
źródło
Dodaj ostatnią wersję zależności butterknive, którą możesz sprawdzić tutaj, jeśli się zmieni ( https://github.com/JakeWharton/butterknife ). Obsługuje androidX. Następnie przejdź do poziomu budowania aplikacji i zastąp starą wersję następującą:
dependencies { implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' }
źródło
W przypadku Androidax po prostu zaktualizuj swoje zależności do wersji „10.0.0”
dependencies { implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' }
Poszukaj dokumentacji tutaj
źródło
Zaktualizuj ButterKnife do najnowszej wersji i upewnij się, że dodajesz je do build.gradle (aplikacji):
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
źródło
Mój projekt nie używa Butterknife, ale wystąpił ten sam błąd „Podany artefakt zawiera literał ciągu z odwołaniem do pakietu„ android.support.v4.widget ”, którego nie można bezpiecznie przepisać. Biblioteki używające odbić, takie jak procesory adnotacji, muszą być aktualizowane ręcznie, aby dodać obsługę systemu Androidx „Oto, co zrobiłem, aby go rozwiązać: Zaktualizuj wersję paczkomatu
plik kompilacji gradle
Zastąpić:
annotationProcessor 'org.parceler:parceler:1.1.6' implementation 'org.parceler:parceler-api:1.1.6'
Z:
annotationProcessor 'org.parceler:parceler:1.1.13' implementation 'org.parceler:parceler-api:1.1.13'
źródło
Której wersji używasz Butterknife? Najnowsza wersja 9.0.0-rc2 obsługuje system Androidx.
UPD: W repozytorium github Butterknife jest zamknięty problem . Tymczasowe obejście
Dodaj kompilator android.jetifier.blacklist = butterknife-compiler do pliku gradle.properties.
źródło
Użycie najnowszej wersji Butterknife rozwiązało problem. Użyj> = 9.0.0-rc2 (wersja Butterknife), aby obsługiwać androidX. Aby zobaczyć najnowsze wydanie, sprawdź link - https://github.com/JakeWharton/butterknife/releases
źródło
Zmiana
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
do
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
lub inne motywy materiałowe. Ten błąd pojawił się po uruchomieniu nowego projektu z „Brak aktywności” w Android Studio 4.0.1
źródło
zaktualizuj Butterknife + unieważnij pamięć podręczną i uruchom ponownie + zsynchronizuj gradle, jeśli buterknife nie jest używany, po prostu wyczyść pamięć podręczną i uruchom ponownie
źródło