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

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

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

10 ответов

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

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

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

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

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

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

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

Обновите ButterKnife до последней версии и обязательно добавьте их в свой build.gradle(приложение):

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

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

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

UPD: на репозитории GitHub Butterfly есть закрытый вопрос. Временное решение

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

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

+ Изменить

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

к

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

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

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

В моем старом проекте я столкнулся с той же проблемой, попробовал все варианты, но не помогло, у меня работает только это изменение:

Внесите следующие изменения в файл gradle.properties .

      android.useAndroidX=false
android.enableJetifier=false
Другие вопросы по тегам