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?

Tnaffh
la source
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'
    }
}
Jorge Gil
la source
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'
}
Shid
la source
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

Rishabh Saxena
la source
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
}
}
twenk11k
la source
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.

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

L'utilisation de la dernière version de Butterknife a résolu le problème. Utilisez> = 9.0.0-rc2 (Butterknife Version) pour prendre en charge androidX. Pour la dernière version, consultez le lien - https://github.com/JakeWharton/butterknife/releases

Chahat Jain
la source
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

Luis Olivares
la source
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

user2965003
la source
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

Moustafa Shahin
la source