126 votes

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

J'ai mis à jour mon android studio to 3.4 canary et maintenant je ne peux plus construire avec succès à cause 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, ça a quelque chose à voir avec Butterknife, androidx and Jetifier

Quelqu'un sait-il comment réparer cela ?

0 votes

J'ai essayé ça : este mais pas de chance

0 votes

Quelle était l'expression régulière que vous avez essayé d'ajouter à la liste noire ?

0 votes

L'artefact donné contient une chaîne littérale avec une référence de paquetage '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éfini à true. Je suis capable d'exécuter l'application dans l'émulateur ou le dispositif autrement. Comment résoudre ce problème ?

202voto

Jorge Gil Points 422

Nouvelle réponse correcte :

Butterknife 10.0.0 a ajouté le support pour 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 butterknife 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'
    }
}

0 votes

Je pense que vous n'avez pas ajouté Android.jetifier.blacklist = butterknife.* \\.jar parce que j'ai testé que cela ne fonctionnait pas. Il suffit d'ajouter le classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2' pour qu'il fonctionne lors du débogage et exporte le fichier apk sans problème.

0 votes

Vous trouverez plus d'informations ici issuetracker.google.com/issues/119135578#comment5

1 votes

Cette réponse est correcte, mais regardez : stackoverflow.com/a/54345816/371749 la mise à jour de butterknife à 10, résout également ce problème d'une meilleure manière.

63voto

Shid Points 32

Ajouter la dernière version de la dépendance du butterknive ; vous pouvez la vérifier ici si elle change ( https://github.com/JakeWharton/butterknife ). Il supporte androidX. Ensuite, allez dans votre application build graddle et remplacez l'ancienne version par la suivante :

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

28voto

Rishabh Saxena Points 1223

Pour androidx, il suffit de mettre à 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 aquí

0 votes

Ma zone d'édition de texte par clic donne un pointeur nul. Elle n'est pas initialisée.

19voto

twenk11k Points 205

Mettez à jour ButterKnife à la dernière version et assurez-vous d'ajouter ces éléments dans votre build.gradle(app) :

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

0 votes

Meilleure réponse, après l'upgeade j'ai cherché cette solution pour --> Erreur : Les méthodes d'interface statique ne sont supportées qu'à partir d'Android N (--min-api 24) : void butterknife.Unbinder.lambda$static$0()

0 votes

Je vous aime, vous avez réussi... J'ai passé la moitié de la journée à chercher, puis cette réponse est arrivée.

10voto

Luis Olivares Points 1

Mon projet n'utilise pas butterknife, mais j'ai eu la même erreur "The given artifact contains a string literal with a package reference 'Android.support.v4.widget' that cannot be safe rewritten. 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. " Voici ce que j'ai fait pour résoudre ce problème : Mettez à jour votre version de Parceler

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'

gradle file code gradle file view

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X