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

Я обновил свой 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

Кто-нибудь знает, как это исправить?

попробовал это: это, но не повезло

Tnaffh 26.11.2018 17:13

Какое регулярное выражение вы пытались добавить в черный список?

Jorge Gil 26.11.2018 19:29

Данный артефакт содержит строковый литерал со ссылкой на пакет android.support.v4.widget, которую нельзя безопасно переписать. Библиотеки, использующие отражение, такие как процессоры аннотаций, необходимо обновлять вручную, чтобы добавить поддержку androidx. Я получаю указанную выше ошибку, когда пытаюсь создать подписанный apk с minifyenabled и shrinkresources, для которых установлено значение true. В противном случае я могу запустить приложение в эмуляторе или устройстве. Как решить эту проблему?

Arpit 24.07.2020 19:05

Хороший вопрос! Очень полезно, спасибо

Androider 26.08.2020 21:12
119
4
91 072
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Какую версию, если вы используете Butterknife? Последняя версия 9.0.0-rc2 поддерживает androidx.

UPD: По масляному ножу репозиторий github есть закрытый вопрос. Временное решение

Добавьте android.jetifier.blacklist = butterknife-compiler в свой файл gradle.properties.

Я использую 9.0.0-rc2 и получаю ту же ошибку

Jorge Gil 26.11.2018 19:27
Ответ принят как подходящий

Новый правильный ответ:

В 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:

Попробуйте занести масляный нож в черный список на сайте jetifier:

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, потому что я тестировал, что это не сработало. Вы только добавляете путь к классам com.jakewharton: butterknife-gradle-plugin: 9.0.0-rc2, тогда он будет работать при отладке и экспорте файла apk без проблем.

kimcy 27.11.2018 05:50

Более подробную информацию можно найти здесь Issuesetracker.google.com/issues/119135578#comment5

Jude Fernandes 11.12.2018 19:25

Этот ответ правильный, но взгляните на: stackoverflow.com/a/54345816/371749 обновляет масляный нож до 10, также решает эту проблему лучше.

cV2 10.05.2019 10:07

Это решение отлично работает для отладочной сборки, но я не могу создать подписанный выпуск APK. Данный артефакт содержит строковый литерал со ссылкой на пакет android.support.v4.widget, которую нельзя безопасно переписать. Библиотеки, использующие отражение, такие как процессоры аннотаций, необходимо обновлять вручную, чтобы добавить поддержку androidx.

Arpit 24.07.2020 19:08

очень полезно, спасибо

Androider 26.08.2020 21:13

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

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

Использование последней версии Butterknife решило проблему. Используйте> = 9.0.0-rc2 (версия Butterknife) для поддержки androidX. Для получения последней версии проверьте ссылку - https://github.com/JakeWharton/butterknife/releases

Обновите 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 03.06.2019 20:52

люблю тебя, чувак, ты сделал это ... Я потратил полдня на поиски, потом приходит этот ответ.

Zeeshan Mehdi 06.05.2020 07:14

Для androidx просто обновите свои зависимости до версии '10.0.0 '.

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

Ищите документацию здесь

В текстовом поле редактирования My Click отображается пустой указатель. это не инициализируется.

Vasudev Vyas 01.08.2019 07:37

Изменять

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

к

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

или другие Материальные темы. Получил эту ошибку после запуска нового проекта с «Нет активности» в Android Studio 4.0.1

В моем проекте не используется масляный нож, но у меня была та же ошибка "Данный артефакт содержит строковый литерал со ссылкой на пакет '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 file codegradle file view

обновить масляный нож + сделать недействительным кеш и перезапустить + синхронизировать градиент если бутербож не используется, просто очистите кеш и перезапустите

Другие вопросы по теме