L'artefact donné contient une chaîne littérale avec une référence de package «android.support.v4.content» qui ne peut pas être réécrite en toute sécurité. pour androidx


99

J'ai mis à niveau mon android studio to 3.4 canaryet maintenant je ne peux plus réussir à construire en raison de l'erreur suivante:

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.

Plus de détails:

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

Clairement, c'est quelque chose à voir avec Butterknife, androidx and Jetifier

Est-ce que quelqu'un sait comment résoudre ce problème?


essayé ceci: ceci mais pas de chance
Tnaffh

Quelle expression régulière avez-vous essayé d'ajouter à la liste noire?
Jorge Gil

L'artefact donné contient une chaîne littérale avec une référence de package «android.support.v4.widget» qui ne peut pas être réécrite en toute sécurité. Les bibliothèques utilisant la réflexion, telles que les processeurs d'annotation, doivent être mises à jour manuellement pour ajouter la prise en charge d'Androidx. Je reçois l'erreur ci-dessus, lorsque j'essaie de créer un apk signé avec minifyenabled et shrinkresources définis sur true. Je suis capable d'exécuter une application dans un émulateur ou un appareil autrement. Comment résoudre ce problème?
Arpit Rastogi le

Bonne question! Très utile, merci
Androider

Réponses:


149

Nouvelle réponse correcte:

Butterknife 10.0.0 a ajouté la prise en charge d'AndroidX.

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

Ancienne réponse pour Butterknife <10.0.0:

Essayez de mettre le couteau à beurre sur la liste noire du jetifier:

gradle.properties file:

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

Vous devez être sur la version 3.3.0-rc1 de l'AGP et la version 1.3.0 du plugin 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'
    }
}

Je pense que vous n'ajoutez pas android.jetifier.blacklist = butterknife. * \\. Jar parce que j'ai testé cela n'a pas fonctionné. Vous n'ajoutez que le chemin de classe 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2', puis il fonctionnera lors du débogage et de l'exportation du fichier apk sans problème.
kimcy929

Plus d'informations peuvent être trouvées ici issuetracker.google.com/issues/119135578#comment5
Jude Fernandes

1
Cette réponse est correcte, mais jetez un œil à: stackoverflow.com/a/54345816/371749 mise à jour Butterknife à 10, résout également ce problème d'une meilleure manière.
cV2

Cette solution fonctionne bien pour la version de débogage, mais je ne suis pas en mesure de créer une version APK signée. L'artefact donné contient une chaîne littérale avec une référence de package «android.support.v4.widget» qui ne peut pas être réécrite en toute sécurité. Les bibliothèques utilisant la réflexion, telles que les processeurs d'annotation, doivent être mises à jour manuellement pour ajouter la prise en charge d'Androidx.
Arpit Rastogi le

très utile, Merci
Androider

60

Ajoutez la dernière version de la dépendance butterknive, vous pouvez la vérifier ici si elle change ( https://github.com/JakeWharton/butterknife ). Il prend en charge androidX. Ensuite, accédez à la graddle de compilation de votre application et remplacez l'ancienne version par la suivante:

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

27

Pour androidx, mettez simplement à niveau vos dépendances vers la version '10 .0.0 '

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

Recherchez la documentation ici


La zone de texte d'édition My Click donne un pointeur nul. ce n'est pas initialiser.
Vasudev Vyas

18

Mettez à niveau ButterKnife vers la dernière version et assurez-vous de les ajouter à votre build.gradle (application):

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

meilleure réponse, après la mise à jour, j'ai recherché cette solution -> Erreur: les méthodes d'interface statique ne sont prises en charge qu'à partir d'Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

je t'aime mec tu l'as fait ... j'ai perdu la moitié de la journée à chercher puis cette réponse vient.
Zeeshan Mehdi

1

Quelle version si vous utilisez Butterknife? La dernière version 9.0.0-rc2 prend en charge androidx.

UPD: Il y a un problème fermé sur le dépôt github de Butterknife . Solution de contournement temporaire

Ajoutez android.jetifier.blacklist = butterknife-compiler à votre fichier gradle.properties.


Je suis sur 9.0.0-rc2 et j'obtiens exactement la même erreur
Jorge Gil


1

Mon projet n'utilise pas Butterknife, mais j'ai eu la même erreur "L'artefact donné contient une chaîne littérale avec une référence de package 'android.support.v4.widget' qui ne peut pas être réécrite en toute sécurité. Les bibliothèques utilisant la réflexion comme les processeurs d'annotations doivent être mis à jour manuellement pour ajouter le support pour androidx "Voici ce que j'ai fait pour le résoudre: Mettez à jour la version de votre colis

fichier de construction gradle

Remplacer:

annotationProcessor 'org.parceler:parceler:1.1.6'
implementation 'org.parceler:parceler-api:1.1.6'

Avec:

  annotationProcessor 'org.parceler:parceler:1.1.13'
  implementation 'org.parceler:parceler-api:1.1.13'

code de fichier gradle vue du fichier gradle


0

Changement

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

à

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

ou d'autres thèmes matériels. Vous avez cette erreur après avoir démarré un nouveau projet avec "Aucune activité" dans Android Studio 4.0.1


0

mettre à jour butterknife + invalider le cache et redémarrer + synchroniser le gradle si buterknife n'est pas utilisé, vider simplement le cache et redémarrer

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.