O artefato fornecido contém um literal de string com uma referência de pacote 'android.support.v4.content' que não pode ser reescrito com segurança. para androidx

99

Eu atualizei meu android studio to 3.4 canarye agora não consigo mais construir com sucesso devido ao seguinte erro:

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.

Mais detalhes:

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, é algo a ver com Butterknife, androidx and Jetifier

Alguém sabe como consertar isso?

Tnaffh
fonte
tentei isso: isso mas sem sorte
Tnaffh
Qual foi a expressão regular que você tentou adicionar à lista negra?
Jorge Gil
O artefato fornecido contém um literal de string com uma referência de pacote 'android.support.v4.widget' que não pode ser reescrito com segurança. Bibliotecas que usam reflexão, como processadores de anotação, precisam ser atualizadas manualmente para adicionar suporte para androidx. Estou recebendo o erro acima, quando estou tentando criar um apk assinado com minifyenabled e shrinkresources definidos como true. Consigo executar o aplicativo no emulador ou dispositivo de outra forma. Como resolver esse problema?
Arpit Rastogi
Boa pergunta! Muito útil, obrigado
Androider

Respostas:

149

Nova resposta correta:

Butterknife 10.0.0 adicionou suporte para AndroidX.

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

Resposta antiga para Butterknife <10.0.0:

Tente colocar o butterknife na lista negra do jetificador:

gradle.properties file:

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

Você precisa estar no 3.3.0-rc1 do AGP e na versão 1.3.0 do plug-in 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
fonte
Acho que você não adiciona android.jetifier.blacklist = butterknife. * \\. Jar porque testei não funcionou. Você apenas adiciona classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2' e então funcionará ao depurar e exportar o arquivo apk sem problemas.
kimcy929
Mais informações podem ser encontradas aqui issuetracker.google.com/issues/119135578#comment5
Jude Fernandes
1
Esta resposta está correta, mas dê uma olhada em: stackoverflow.com/a/54345816/371749 atualizar butterknife para 10, também resolve esse problema de uma maneira melhor.
cV2
Esta solução funciona bem para compilação de depuração, mas não consigo criar APK de versão assinada. O artefato fornecido contém um literal de string com uma referência de pacote 'android.support.v4.widget' que não pode ser reescrito com segurança. Bibliotecas que usam reflexão, como processadores de anotação, precisam ser atualizadas manualmente para adicionar suporte para androidx.
Arpit Rastogi
muito útil, obrigado
Androider
60

Adicione a última versão da dependência butterknive. Você pode verificar aqui se ela mudar ( https://github.com/JakeWharton/butterknife ). Suporta androidX. Em seguida, vá para o graddle de compilação do seu aplicativo e substitua a versão anterior pela seguinte:

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

Para androidx, basta atualizar suas dependências para a versão '10 .0.0 '

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

Procure a documentação aqui

Rishabh Saxena
fonte
Minha caixa de texto de edição Click fornece um ponteiro nulo. não é inicializar.
Vasudev Vyas
18

Atualize ButterKnife para a versão mais recente e certifique-se de adicioná-los ao seu build.gradle (app):

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}
twenk11k
fonte
melhor resposta, após a atualização, pesquisei esta solução -> Erro: métodos de interface estáticos são suportados apenas a partir do Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper
te amo cara você fez isso ... eu perdi metade do dia procurando então essa resposta vem.
Zeeshan Mehdi
1

Qual versão do Butterknife você usa? A última versão 9.0.0-rc2 suporta androidx.

UPD: há um problema fechado no repositório github do butterknife . Solução temporária

Adicione android.jetifier.blacklist = butterknife-compiler ao arquivo gradle.properties.

Konstantin Berkov
fonte
Estou em 9.0.0-rc2 e estou recebendo exatamente o mesmo erro
Jorge Gil
1

Usar a versão mais recente do Butterknife resolveu o problema. Use> = 9.0.0-rc2 (versão Butterknife) para oferecer suporte ao androidX. Para a versão mais recente, verifique o link - https://github.com/JakeWharton/butterknife/releases

Chahat Jain
fonte
1

Meu projeto não usa butterknife, mas eu tive o mesmo erro "O artefato fornecido contém uma string literal com uma referência de pacote 'android.support.v4.widget' que não pode ser reescrita com segurança. Bibliotecas que usam reflexão, como processadores de anotação, precisam ser atualizado manualmente para adicionar suporte para androidx "Foi o que fiz para resolver: atualize a versão do seu parceler

arquivo de compilação do gradle

Substituir:

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

Com:

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

código de arquivo gradle visualização de arquivo gradle

Luis olivares
fonte
0

mudança

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

para

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

ou outros Temas Materiais. Recebi este erro depois de iniciar um novo projeto com "Sem atividade" no Android Studio 4.0.1

user2965003
fonte
0

atualizar butterknife + invalidar cache e reiniciar + sincronizar gradle se buterknife não for usado apenas limpar o cache e reiniciar

Moustafa Shahin
fonte