Даний артефакт містить рядковий літерал із посиланням на пакет "android.support.v4.content", який не можна безпечно переписати. для androidx


99

Я модернізував свій, android studio to 3.4 canaryі тепер я більше не можу успішно будувати через таку помилку:

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.

Детальніше:

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

Очевидно, це щось спільне Butterknife, androidx and Jetifier

Хтось знає, як це виправити?


спробував це: це, але не пощастило
Тнафф

Який регулярний вираз ви намагалися додати до чорного списку?
Хорхе Гіл

Даний артефакт містить рядковий літерал із посиланням на пакет `android.support.v4.widget ', який не можна безпечно переписати. Бібліотеки, що використовують відображення, такі як процесори анотацій, потрібно оновлювати вручну, щоб додати підтримку для androidx. Я отримую вищевказану помилку, коли я намагаюся створити підписаний apk з увімкненими функціями minifyenabled та shrinkresources, встановленими на true. Я можу запустити додаток в емуляторі або на пристрої інакше. Як вирішити цю проблему?
Arpit Rastogi

Приємне запитання! Дуже
корисно

Відповіді:


148

Нова правильна відповідь:

Butterknife 10.0.0 додав підтримку AndroidX.

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

Стара відповідь для Butterknife <10.0.0:

Спробуйте масляний ніж із єтифікатора, включений до чорного списку:

gradle.properties file:

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

Вам потрібно бути на версії 3.3.0-rc1 AGP та версії 1.3.0 плагіна 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'
    }
}

Я думаю, ви не додаєте android.jetifier.blacklist = butterknife. * \\. Jar, оскільки я перевірив, що це не спрацювало. Ви лише додаєте classpath 'com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2', тоді він буде працювати під час налагодження та експорту файлу apk без проблем.
kimcy929

Більше інформації можна знайти тут issueetracker.google.com/issues/119135578#comment5
Джуд Фернандес,

1
Ця відповідь є правильним, але погляньте на: stackoverflow.com/a/54345816/371749 ніж для масла поновлення до 10, а також вирішує цю проблему в кращу сторону.
cV2,

Це рішення чудово працює для збірки налагодження, але я не можу створити підписаний APK-файл випуску. Даний артефакт містить рядковий літерал із посиланням на пакет `android.support.v4.widget ', який не можна безпечно переписати. Бібліотеки, що використовують відображення, такі як процесори анотацій, потрібно оновлювати вручну, щоб додати підтримку для androidx.
Arpit Rastogi

дуже корисно, дякую
Androider

60

Додайте останню версію залежності від масляного ножа, яку ви можете перевірити тут, якщо вона зміниться ( https://github.com/JakeWharton/butterknife ). Він підтримує androidX. Потім перейдіть до модуля збірки додатків і замініть стару версію наступною:

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

27

Для androidx просто оновіть свої залежності до версії '10 .0.0 '

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

Шукайте документацію тут


Текстове поле My Click edit дає нульовий покажчик. він не ініціалізується.
Vasudev Віас

18

Оновіть ButterKnife до останньої версії та обов’язково додайте їх у свою build.gradle (програму):

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

найкраща відповідь, після того, як я шукав це рішення -> Помилка: Методи статичного інтерфейсу підтримуються лише починаючи з Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()
avisper

люблю тебе, людина, ти це зробив ... я витратив половину дня на пошуки, тоді приходить ця відповідь.
Зеешан Мехді

1

Яку версію, якщо Ви використовуєте Butterknife? Остання версія 9.0.0-rc2 підтримує androidx.

UPD: Є закрите питання щодо репозиторію github масляного ножа . Тимчасовий обхідний шлях

Додайте android.jetifier.blacklist = компілятор butterknife у файл gradle.properties.


Я на 9.0.0-rc2 і отримую точно таку ж помилку
Хорхе Гіл


1

У моєму проекті не використовується butterknife, але в мене трапилася та сама помилка "Даний артефакт містить рядковий літерал із посиланням на пакет" android.support.v4.widget ", який неможливо безпечно переписати. Бібліотеки, що використовують відображення, такі як процесори анотацій, повинні оновлюватися вручну, щоб додати підтримку для androidx "Це те, що я зробив для її вирішення: оновіть версію пакета

файл побудови gradle -

Замінити:

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

З:

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

код файлу gradle подання файлу gradle -


0

Зміна

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

до

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

або інші матеріальні теми. Отримала цю помилку після запуску нового проекту з "Немає активності" в Android Studio 4.0.1


0

оновити butterknife + анулювати кеш і перезапустити + синхронізувати gradle, якщо buterknife не використовується, просто очистити кеш і перезапустити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.