The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. for androidx

AndroidButterknifeAndroidxAndroid Jetifier

Android Problem Overview


I upgraded my android studio to 3.4 canary and now I cannot successfully build anymore due to the following error:

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.

More details:

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

Clearly, its something to do with Butterknife, androidx and Jetifier

Do anybody know how to fix this?

Android Solutions


Solution 1 - Android

New correct answer:

Butterknife 10.0.0 added support for AndroidX.

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

Old answer for Butterknife < 10.0.0:

Try blacklisting butterknife from the jetifier:

gradle.properties file:

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

You need to be on the 3.3.0-rc1 of the AGP and the 1.3.0 version of the Kotlin Gradle plugin:

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

Solution 2 - Android

Add the last version of the butterknive dependency you can check it here if it changes (https://github.com/JakeWharton/butterknife). It supports androidX. Then go to your app build graddle and replace the old version with the following:

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

Solution 3 - Android

For androidx simply upgrade your dependencies to version '10.0.0'

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

Look for documentation here

Solution 4 - Android

Upgrade ButterKnife to latest version and make sure to add these into your build.gradle(app):

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

Solution 5 - Android

My project doesn't use butterknife, but I had the same error "The given artifact contains a string literal with a package reference 'android.support.v4.widget' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx " This what I did to solve it: Update your parceler version

gradle build file

Replace:

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

With:

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

gradle file code gradle file view

Solution 6 - Android

Which version if Butterknife you use? Latest version 9.0.0-rc2 supports androidx.

UPD: There is closed issue on butterknife's github repo. Temporary workaround

Add android.jetifier.blacklist=butterknife-compiler to your gradle.properties file.

Solution 7 - Android

Using the latest version of Butterknife resolved the issue. Use >= 9.0.0-rc2 (Butterknife Version) to support androidX. For the latest release check the link - https://github.com/JakeWharton/butterknife/releases

Solution 8 - Android

Change

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

to

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

or other Material Themes. Got this error after starting New Project with "No Activity" in Android Studio 4.0.1

Solution 9 - Android

update butterknife + invalidate cache and restart + sync gradle if buterknife not used just clear cache and restart

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTnaffhView Question on Stackoverflow
Solution 1 - AndroidJorge GilView Answer on Stackoverflow
Solution 2 - AndroidShidView Answer on Stackoverflow
Solution 3 - AndroidRishabh SaxenaView Answer on Stackoverflow
Solution 4 - Androidtwenk11kView Answer on Stackoverflow
Solution 5 - AndroidLuis OlivaresView Answer on Stackoverflow
Solution 6 - AndroidKonstantin BerkovView Answer on Stackoverflow
Solution 7 - AndroidChahat JainView Answer on Stackoverflow
Solution 8 - Androiduser2965003View Answer on Stackoverflow
Solution 9 - AndroidMoustafa ShahinView Answer on Stackoverflow