Artefak yang diberikan berisi string literal dengan referensi paket 'android.support.v4.content' yang tidak dapat ditulis ulang dengan aman. untuk androidx

102

Saya meningkatkan android studio to 3.4 canaryversi saya dan sekarang saya tidak dapat berhasil membangun lagi karena kesalahan berikut:

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.

Keterangan lebih lanjut:

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

Jelas, itu ada hubungannya dengan Butterknife, androidx and Jetifier

Apakah ada yang tahu cara memperbaikinya?

Tnaffh
sumber
mencoba ini: ini tetapi tidak berhasil
Tnaffh
Apa persamaan reguler yang Anda coba tambahkan ke daftar hitam?
Jorge Gil
Artefak yang diberikan berisi string literal dengan referensi paket 'android.support.v4.widget' yang tidak dapat ditulis ulang dengan aman. Pustaka yang menggunakan refleksi seperti pemroses anotasi perlu diperbarui secara manual untuk menambahkan dukungan untuk androidx. Saya menerima kesalahan di atas, ketika saya mencoba membuat apk yang ditandatangani dengan minifyenabled dan shrinkresources disetel ke true. Saya dapat menjalankan aplikasi di emulator atau perangkat sebaliknya. Bagaimana cara mengatasi masalah ini?
Arpit Rastogi
Pertanyaan bagus! Sangat Bermanfaat, Terima kasih
Androider

Jawaban:

163

Jawaban baru yang benar:

Butterknife 10.0.0 menambahkan dukungan untuk AndroidX.

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

Jawaban lama untuk Butterknife <10.0.0:

Coba daftar hitam pisau mentega dari jetifier:

gradle.properties file:

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

Anda harus menggunakan versi 3.3.0-rc1 dari AGP dan versi 1.3.0 dari 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
sumber
Saya rasa Anda tidak menambahkan android.jetifier.blacklist = butterknife. * \\. Jar karena saya mengujinya tidak berhasil. Anda hanya menambahkan classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2' maka itu akan berfungsi saat men-debug dan mengekspor file apk tanpa masalah.
kimcy929
Info lebih lanjut dapat ditemukan di sini Issuetracker.google.com/issues/119135578#comment5
Jude Fernandes
1
Jawaban ini benar, tetapi lihat: stackoverflow.com/a/54345816/371749 perbarui butterknife ke 10, juga selesaikan masalah ini dengan cara yang lebih baik.
cV2
Solusi ini berfungsi dengan baik untuk debug build, tetapi saya tidak dapat membuat APK rilis bertanda tangan. Artefak yang diberikan berisi string literal dengan referensi paket 'android.support.v4.widget' yang tidak dapat ditulis ulang dengan aman. Pustaka yang menggunakan refleksi seperti pemroses anotasi perlu diperbarui secara manual untuk menambahkan dukungan untuk androidx.
Arpit Rastogi
sangat membantu, Terima kasih
Androider
61

Tambahkan versi terakhir dari dependensi butterknive, Anda dapat memeriksanya di sini jika berubah ( https://github.com/JakeWharton/butterknife ). Ini mendukung androidX. Lalu pergi ke graddle build aplikasi Anda dan ganti versi lama dengan yang berikut:

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

Untuk androidx, cukup tingkatkan dependensi Anda ke versi '10 .0.0 '

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

Cari dokumentasi di sini

Rishabh Saxena
sumber
Kotak teks edit Klik Saya memberikan penunjuk nol. itu tidak menginisialisasi.
Vasudev Vyas
18

Tingkatkan ButterKnife ke versi terbaru dan pastikan untuk menambahkan ini ke build.gradle (aplikasi) Anda:

android {
...
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}
twenk11k
sumber
jawaban terbaik, setelah upgeade saya telah mencari solusi ini untuk -> Error: Metode antarmuka statis hanya didukung mulai dengan Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper
mencintaimu, kau berhasil ... Aku menyia-nyiakan setengah hari untuk mencari, lalu jawaban ini datang.
Zeeshan Mehdi
4

Proyek saya tidak menggunakan butterknife, tetapi saya mengalami kesalahan yang sama "Artefak yang diberikan berisi string literal dengan referensi paket 'android.support.v4.widget' yang tidak dapat ditulis ulang dengan aman. Pustaka yang menggunakan refleksi seperti pemroses anotasi perlu diperbarui secara manual untuk menambahkan dukungan untuk androidx "Ini yang saya lakukan untuk mengatasinya: Perbarui versi paket Anda

file build gradle

Menggantikan:

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

Dengan:

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

kode file gradle tampilan file gradle

Luis Olivares
sumber
1

Versi berapa jika Butterknife yang Anda gunakan? Versi terbaru 9.0.0-rc2 mendukung androidx.

UPD: Ada masalah tertutup pada repo github butterknife . Solusi sementara

Tambahkan android.jetifier.blacklist = butterknife-compiler ke file gradle.properties Anda.

Konstantin Berkov
sumber
Saya menggunakan 9.0.0-rc2 dan saya mendapatkan kesalahan yang sama persis
Jorge Gil
0

Perubahan

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

untuk

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

atau Tema Material lainnya. Dapatkan kesalahan ini setelah memulai Proyek Baru dengan "Tidak Ada Aktivitas" di Android Studio 4.0.1

pengguna2965003
sumber
0

perbarui butterknife + batalkan cache dan restart + sinkronkan gradle jika buterknife tidak digunakan, cukup hapus cache dan mulai ulang

Moustafa Shahin
sumber