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?
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'
}
}
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'
}
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
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
}
}
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.
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
来源:https://stackoverflow.com/questions/53484988/the-given-artifact-contains-a-string-literal-with-a-package-reference-android-s