Я обновил свой, 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
Кто-нибудь знает, как это исправить?
Ответы:
Новый правильный ответ:
В 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' } }
источник
Добавьте последнюю версию зависимости от 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 .Временное решение
Добавьте 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
источник
обновить Butterknife + сделать кеш недействительным и перезапустить + синхронизировать gradle, если buterknife не используется, просто очистите кеш и перезапустите
источник