El artefacto proporcionado contiene un literal de cadena con una referencia de paquete "android.support.v4.content" que no se puede reescribir de forma segura. para androidx

99

Actualicé mi android studio to 3.4 canaryy ahora ya no puedo construir con éxito debido al siguiente error:

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.

Más detalles:

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

Claramente, tiene algo que ver con Butterknife, androidx and Jetifier

¿Alguien sabe cómo solucionar esto?

Tnaffh
fuente
intenté esto: esto pero sin suerte
Tnaffh
¿Cuál fue la expresión regular que intentó agregar a la lista negra?
Jorge Gil
El artefacto proporcionado contiene un literal de cadena con una referencia de paquete 'android.support.v4.widget' que no se puede reescribir de forma segura. Las bibliotecas que utilizan la reflexión, como los procesadores de anotaciones, deben actualizarse manualmente para agregar compatibilidad con androidx. Recibo el error anterior, cuando intento crear una apk firmada con minifyenabled y shrinkresources configurados en true. Puedo ejecutar la aplicación en un emulador o dispositivo de otra manera. Cómo resolver este problema?
Arpit Rastogi
¡Buena pregunta! Muy útil, gracias
Androider

Respuestas:

149

Nueva respuesta correcta:

Butterknife 10.0.0 agregó soporte para AndroidX.

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

Respuesta anterior para Butterknife <10.0.0:

Intente poner el cuchillo de mantequilla en la lista negra del jetifier:

gradle.properties file:

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

Debe estar en 3.3.0-rc1 de AGP y en la versión 1.3.0 del complemento 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
fuente
Creo que no agregas android.jetifier.blacklist = butterknife. * \\. Jar porque probé que no funcionó. Solo agrega classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2', luego funcionará cuando se depure y exporte el archivo apk sin ningún problema.
kimcy929
Puede encontrar más información aquí: issuetracker.google.com/issues/119135578#comment5
Jude Fernandes
1
Esta respuesta es correcta, pero eche un vistazo a: stackoverflow.com/a/54345816/371749 update butterknife a 10, también resuelve este problema de una mejor manera.
cV2
Esta solución funciona bien para la compilación de depuración, pero no puedo crear APK de lanzamiento firmado. El artefacto proporcionado contiene un literal de cadena con una referencia de paquete 'android.support.v4.widget' que no se puede reescribir de forma segura. Las bibliotecas que utilizan la reflexión, como los procesadores de anotaciones, deben actualizarse manualmente para agregar compatibilidad con androidx.
Arpit Rastogi
muy útil, gracias
Androider
60

Agregue la última versión de la dependencia de la navaja de mantequilla; puede verificarla aquí si cambia ( https://github.com/JakeWharton/butterknife ). Es compatible con androidX. Luego, vaya al graddle de compilación de su aplicación y reemplace la versión anterior con lo siguiente:

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

Para androidx, simplemente actualice sus dependencias a la versión '10 .0.0 '

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

Busque documentación aquí

Rishabh Saxena
fuente
El cuadro de texto de edición My Click proporciona un puntero nulo. no se inicializa.
Vasudev Vyas
18

Actualice ButterKnife a la última versión y asegúrese de agregarlos a su build.gradle (aplicación):

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}
twenk11k
fuente
la mejor respuesta, después de la actualización, busqué esta solución -> Error: los métodos de interfaz estática solo son compatibles a partir de Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper
Te amo hombre, lo lograste ... Perdí la mitad del día buscando y luego llega esta respuesta
Zeeshan Mehdi
1

¿Qué versión de Butterknife usas? La última versión 9.0.0-rc2 es compatible con androidx.

UPD: Hay un problema cerrado en el repositorio de github de butterknife . Solución temporal

Agrega android.jetifier.blacklist = butterknife-compiler a tu archivo gradle.properties.

Konstantin Berkov
fuente
Estoy en 9.0.0-rc2 y obtengo exactamente el mismo error
Jorge Gil
1

Mi proyecto no usa butterknife, pero tuve el mismo error "El artefacto dado contiene un literal de cadena con una referencia de paquete 'android.support.v4.widget' que no se puede reescribir de manera segura. Las bibliotecas que usan la reflexión, como los procesadores de anotaciones, deben actualizarse manualmente para agregar soporte para androidx "Esto es lo que hice para resolverlo: actualice la versión de su paquete

archivo de compilación gradle

Reemplazar:

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

Con:

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

código de archivo gradle vista de archivo gradle

Luis Olivares
fuente
0

Cambio

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

a

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

u otros temas materiales. Recibí este error después de iniciar un nuevo proyecto con "Sin actividad" en Android Studio 4.0.1

usuario2965003
fuente
0

actualizar butterknife + invalidar el caché y reiniciar + sincronizar gradle si no se usa buterknife, simplemente borre el caché y reinicie

Moustafa Shahin
fuente