Das angegebene Artefakt enthält ein Zeichenfolgenliteral mit der Paketreferenz 'android.support.v4.content', die nicht sicher umgeschrieben werden kann. für androidx

96

Ich habe mein Upgrade durchgeführt android studio to 3.4 canaryund kann jetzt aufgrund des folgenden Fehlers nicht mehr erfolgreich erstellen:

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.

Mehr Details:

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.)

Klar, es hat etwas damit zu tun Butterknife, androidx and Jetifier

Weiß jemand, wie man das behebt?

Tnaffh
quelle
versuchte dies: dies aber kein Glück
Tnaffh
Was war der reguläre Ausdruck, den Sie der schwarzen Liste hinzufügen wollten?
Jorge Gil
Das angegebene Artefakt enthält ein Zeichenfolgenliteral mit der Paketreferenz 'android.support.v4.widget', die nicht sicher umgeschrieben werden kann. Bibliotheken, die Reflection verwenden, wie z. B. Anmerkungsprozessoren, müssen manuell aktualisiert werden, um Unterstützung für Androidx hinzuzufügen. Ich erhalte die obige Fehlermeldung, wenn ich versuche, eine signierte apk mit minifyenabled und shrinkresources auf true zu erstellen. Ich kann die Anwendung auf andere Weise im Emulator oder Gerät ausführen. Wie kann ich dieses Problem beheben?
Arpit Rastogi

Antworten:

140

Neue richtige Antwort:

Butterknife 10.0.0 hat Unterstützung für AndroidX hinzugefügt.

dependencies {
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

Alte Antwort für Buttermesser <10.0.0:

Versuchen Sie, das Buttermesser vom Jetifier auf die schwarze Liste zu setzen:

gradle.properties file:

android.jetifier.blacklist = butterknife.*\\.jar

Sie müssen sich auf dem 3.3.0-rc1 des AGP und der 1.3.0-Version des Kotlin Gradle-Plugins befinden:

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
quelle
Ich denke, Sie fügen nicht android.jetifier.blacklist = butterknife. * \\. Jar hinzu, weil ich getestet habe, dass es nicht funktioniert hat. Sie fügen nur den Klassenpfad 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2' hinzu, dann funktioniert es beim Debuggen und Exportieren der Datei apk ohne Probleme.
Kimcy929
Weitere Informationen finden Sie hier issuetracker.google.com/issues/119135578#comment5
Jude Fernandes
1
Diese Antwort ist richtig, aber sehen Sie sich Folgendes an: stackoverflow.com/a/54345816/371749 Aktualisieren Sie butterknife auf 10, um dieses Problem ebenfalls besser zu beheben.
cV2
Diese Lösung funktioniert gut für die Debug-Erstellung, aber ich kann kein signiertes Release-APK erstellen. Das angegebene Artefakt enthält ein Zeichenfolgenliteral mit der Paketreferenz 'android.support.v4.widget', die nicht sicher umgeschrieben werden kann. Bibliotheken, die Reflektion verwenden, wie z. B. Anmerkungsprozessoren, müssen manuell aktualisiert werden, um Unterstützung für Androidx hinzuzufügen.
Arpit Rastogi
59

Fügen Sie die letzte Version der Butterknive-Abhängigkeit hinzu. Sie können sie hier überprüfen, wenn sie sich ändert ( https://github.com/JakeWharton/butterknife ). Es unterstützt androidX. Gehen Sie dann zu Ihrer App Build Graddle und ersetzen Sie die alte Version durch die folgende:

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}
Shid
quelle
27

Für Androidx aktualisieren Sie einfach Ihre Abhängigkeiten auf Version '10 .0.0 '

dependencies {
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
}

Geben Sie für Dokumentation hier

Rishabh Saxena
quelle
Das Textfeld Mein Klick bearbeiten gibt einen Nullzeiger an. es wird nicht initialisiert.
Vasudev Vyas
18

Aktualisieren Sie ButterKnife auf die neueste Version und stellen Sie sicher, dass Sie diese zu Ihrem build.gradle (App) hinzufügen:

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}
twenk11k
quelle
Beste Antwort, nach dem Upgeade habe ich diese Lösung nach -> Fehler durchsucht: Statische Schnittstellenmethoden werden nur ab Android N (--min-api 24) unterstützt: void butterknife.Unbinder.lambda $ static $ 0 ()
avisper
Ich liebe dich, Mann, du hast es geschafft ... Ich habe den halben Tag damit verbracht zu suchen, dann kommt diese Antwort.
Zeeshan Mehdi
1

Welche Version von Butterknife benutzt du? Die neueste Version 9.0.0-rc2 unterstützt Androidx.

UPD: Es gibt ein geschlossenes Problem mit dem Github-Repo von Butterknife . Temporäre Problemumgehung

Fügen Sie Ihrer Datei gradle.properties android.jetifier.blacklist = butterknife-compiler hinzu.

Konstantin Berkov
quelle
Ich bin auf 9.0.0-rc2 und ich bekomme genau den gleichen Fehler
Jorge Gil
1

Die Verwendung der neuesten Version von Butterknife hat das Problem behoben. Verwenden Sie> = 9.0.0-rc2 (Butterknife Version), um androidX zu unterstützen. Die neueste Version finden Sie unter dem Link https://github.com/JakeWharton/butterknife/releases

Chahat Jain
quelle
0

Veränderung

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

zu

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

oder andere materielle Themen. Ich habe diesen Fehler erhalten, nachdem ich New Project mit "No Activity" in Android Studio 4.0.1 gestartet habe

user2965003
quelle