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?


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

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

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


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

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


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.


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


0

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.