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?


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

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


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

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


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

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



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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.