Verilen yapı, güvenli bir şekilde yeniden yazılamayan 'android.support.v4.content' paket başvurusuna sahip bir dize değişmezi içeriyor. androidx için


102

Kendimi yükselttim android studio to 3.4 canaryve şimdi aşağıdaki hata nedeniyle artık başarılı bir şekilde inşa edemiyorum:

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.

Daha fazla detay:

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

Açıkçası, bununla ilgili bir şey Butterknife, androidx and Jetifier

Bunu nasıl düzelteceğini bilen var mı?


bunu denedim: bu ama şans yok
Tnaffh

Kara listeye eklemeye çalıştığınız normal ifade neydi?
Jorge Gil

Verilen yapı, güvenli bir şekilde yeniden yazılamayan 'android.support.v4.widget' paket başvurusuna sahip bir dize değişmezi içeriyor. Ek açıklama işlemcileri gibi yansıma kullanan kitaplıkların, androidx desteği eklemek için manuel olarak güncellenmesi gerekir. Küçültülmüş ve küçültme kaynakları true olarak ayarlanmış olarak imzalı apk oluşturmaya çalıştığımda yukarıdaki hatayı alıyorum. Aksi takdirde emülatörde veya cihazda uygulama çalıştırabilirim. Bu sorun nasıl çözülür?
Arpit Rastogi

Güzel soru! Çok Yardımcı oldu, Teşekkürler
Androider

Yanıtlar:


162

Yeni doğru cevap:

Butterknife 10.0.0, AndroidX için destek ekledi.

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

Butterknife <10.0.0 için eski cevap:

Jetifier’dan tereyağlı bıçağı kara listeye almayı deneyin:

gradle.properties file:

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

AGP'nin 3.3.0-rc1 ve Kotlin Gradle eklentisinin 1.3.0 sürümünde olmanız gerekir:

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'
    }
}

Android.jetifier.blacklist = butterknife. * \\. Jar eklemediğinizi düşünüyorum çünkü çalışmadı test ettim. Yalnızca classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2' eklerseniz, hata ayıklama ve dosya apk dosyasını sorunsuz bir şekilde dışa aktarırken çalışır.
kimcy929

Daha fazla bilgiyi burada bulabilirsiniz issuetracker.google.com/issues/119135578#comment5
Jude Fernandes

1
Bu yanıt doğru, ancak bir göz atın: stackoverflow.com/a/54345816/371749 butterknife'ı 10'a güncelleyin, ayrıca bu sorunu daha iyi bir şekilde çözer.
cV2

Bu çözüm hata ayıklama derlemesi için iyi çalışıyor ancak imzalı sürüm APK'sı oluşturamıyorum. Verilen yapı, güvenli bir şekilde yeniden yazılamayan 'android.support.v4.widget' paket başvurusuna sahip bir dize değişmezi içeriyor. Ek açıklama işlemcileri gibi yansıma kullanan kitaplıkların, androidx desteği eklemek için manuel olarak güncellenmesi gerekir.
Arpit Rastogi

çok yardımcı oldu, Teşekkürler
Androider

60

Butterknive bağımlılığının son sürümünü ekleyin, değişirse buradan kontrol edebilirsiniz ( https://github.com/JakeWharton/butterknife ). AndroidX'i destekler. Ardından, uygulamanızın derleme aşamasına gidin ve eski sürümü aşağıdakilerle değiştirin:

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

28

Androidx için bağımlılıklarınızı '10 .0.0 'sürümüne yükseltin

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

Belgeleri burada arayın


Tıklama düzenleme metin kutum boş işaretçi veriyor. başlatılmaz.
Vasudev Vyas

18

ButterKnife'ı en son sürüme yükseltin ve bunları build.gradle (uygulamanıza) eklediğinizden emin olun:

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

en iyi cevap, yükseltmeden sonra bu çözümü aradım -> Hata: Statik arayüz yöntemleri yalnızca Android N (--min-api 24) ile başlayarak destekleniyor: void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

seni seviyorum adamım başardın ... günün yarısını arayarak harcadım sonra bu cevap geliyor.
Zeeshan Mehdi

4

Projemde butterknife kullanılmıyor, ancak aynı hatayı aldım "Verilen yapı, güvenli bir şekilde yeniden yazılamayan 'android.support.v4.widget' paket referansına sahip bir dize içeriyor. Ek açıklama işlemcileri gibi yansıma kullanan kitaplıklar şunları yapmalıdır androidx desteği eklemek için manuel olarak güncellenecektir "Bunu çözmek için yaptım: Ayrıştırıcı sürümünüzü güncelleyin

gradle yapı dosyası

Değiştirin:

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

İle:

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

gradle dosya kodu gradle dosya görünümü


1

Butterknife kullanıyorsanız hangi sürümü kullanıyorsunuz? En son sürüm 9.0.0-rc2, androidx'i destekler.

UPD: Butterknife'ın github deposunda kapalı konu var . Geçici çözüm

Android.jetifier.blacklist = butterknife-compiler'ı gradle.properties dosyanıza ekleyin.


9.0.0-rc2 kullanıyorum ve aynı hatayı alıyorum
Jorge Gil


0

Değişiklik

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

-e

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

veya diğer Materyal Temalar. Android Studio 4.0.1'de "Etkinlik Yok" ile Yeni Proje'yi başlattıktan sonra bu hatayı aldım


0

butterknife'ı güncelleyin + önbelleği geçersiz kılın ve buterknife kullanılmadıysa yalnızca önbelleği temizleyin ve yeniden başlatın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.