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ć?

Tnaffh
źródło
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'
    }
}
Jorge Gil
źródło
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'
}
Shid
źródło
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

Rishabh Saxena
źródło
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
}
}
twenk11k
źródło
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

Luis Olivares
źródło
1

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.

Konstantin Berkov
źródło
Jestem na 9.0.0-rc2 i otrzymuję dokładnie ten sam błąd
Jorge Gil
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

user2965003
źródło
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

Moustafa Shahin
źródło