在运行一些古老的开源项目时会遇到这样的问题:
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.
引起这种问题的可能是ButterKnife的问题
具体报错信息如下:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:javaPreCompileDebug'.
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugAnnotationProcessorClasspath'
Caused by: org.gradle.api.internal.artifacts.transform.TransformException: Failed to transform artifact 'butterknife-compiler.jar (com.jakewharton:butterknife-compiler:8.5.1)' to match attributes {artifactType=processed-jar, org.gradle.usage=java-runtime-jars}.
Caused by: org.gradle.api.internal.artifacts.transform.TransformException: Execution failed for JetifyTransform: C:\Users\dell\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife-compiler\8.5.1\76253d53698d5a93191ebf72534e9eeb7391b5c3\butterknife-compiler-8.5.1.jar.
Caused by: java.lang.RuntimeException: Failed to transform 'C:\Users\dell\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife-compiler\8.5.1\76253d53698d5a93191ebf72534e9eeb7391b5c3\butterknife-compiler-8.5.1.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.
Caused by: com.android.tools.build.jetifier.processor.transform.bytecode.AmbiguousStringJetifierException: 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.
ButterKnife的使用需要在Settings的Plugins中下载如下图所示的插件
还需要对model的build.gradle进行更改
(如果你看不到这样排布的文件视图,你应该看看左上角是project视图还是Android视图)
在build.gradle文件的开始加:
apply plugin:'com.jakewharton.butterknife'
在build.gradle文件的dependencies函数中加:
implementation 'com.jakewharton:butterknife:10.2.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1'
此处注意:
老版本的开源项目的配置是如下图所示的: