Podany artefakt zawiera literał ciągu z odwołaniem do pakietu „android.support.v4.content”, którego nie można bezpiecznie przepisać. dla androidx


104

Zaktualizowałem mój android studio to 3.4 canaryi 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ć?


próbowałem tego: to, ale bez powodzenia
Tnaffh

Jakie wyrażenie regularne próbujesz dodać do czarnej listy?
Jorge Gil

Podany artefakt zawiera literał ciągu z odwołaniem do pakietu „android.support.v4.widget”, którego nie można bezpiecznie przepisać. Biblioteki korzystające z odbić, takie jak procesory adnotacji, muszą być aktualizowane ręcznie, aby dodać obsługę systemu Androidx. Otrzymuję powyższy błąd, gdy próbuję utworzyć podpisany apk z ustawieniem minifyenabled i shrinkresources na true. Jestem w stanie uruchomić aplikację w emulatorze lub urządzeniu w inny sposób. Jak rozwiązać ten problem?
Arpit Rastogi

Fajne pytanie! Bardzo pomocne, dzięki
Androider

Odpowiedzi:


166

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'
    }
}

Myślę, że nie dodajesz android.jetifier.blacklist = butterknife. * \\. Jar, ponieważ testowałem, że nie działa. Dodajesz tylko ścieżkę klasy 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2', a wtedy będzie działać bez problemu podczas debugowania i eksportowania pliku apk.
kimcy929

Więcej informacji można znaleźć tutaj issuetracker.google.com/issues/119135578#comment5
Jude Fernandes,

1
Ta odpowiedź jest poprawna, ale spójrz na: stackoverflow.com/a/54345816/371749 zaktualizuj Butterknife do 10, również rozwiązuje ten problem w lepszy sposób.
cV2

1
To rozwiązanie działa dobrze w przypadku kompilacji debugowania, ale nie mogę utworzyć pakietu APK z podpisaną wersją. Podany artefakt zawiera literał ciągu z odwołaniem do pakietu „android.support.v4.widget”, którego nie można bezpiecznie przepisać. Biblioteki korzystające z odbić, takie jak procesory adnotacji, muszą być aktualizowane ręcznie, aby dodać obsługę systemu Androidx.
Arpit Rastogi

bardzo pomocny, dzięki
Androider

61

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'
}

28

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


Pole tekstowe edycji My Click daje pusty wskaźnik. nie jest inicjowany.
Vasudev Vyas

18

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
}
}

najlepsza odpowiedź, po aktualizacji szukałem tego rozwiązania -> Błąd: Statyczne metody interfejsu są obsługiwane tylko począwszy od Androida N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

kocham cię człowieku, udało ci się ... zmarnowałem pół dnia na szukanie, a potem przychodzi ta odpowiedź.
Zeeshan Mehdi

4

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'

kod pliku gradle widok pliku gradle




0

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


0

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.