无法使用ButterKnife依赖项构建Android项目

3

由于butterknife依赖的错误,我无法构建Android项目。

错误信息:

执行任务“:app:javaPreCompileDebug”失败。

无法解决配置“:app:debugAnnotationProcessorClasspath”中的所有文件。 无法将butterknife-compiler-8.6.0.jar(com.jakewharton:butterknife-compiler:8.6.0)转换为匹配的属性, {artifactType = processed-jar,org.gradle.category = library, org.gradle.libraryelements = jar,org.gradle.status = release, org.gradle.usage = java-runtime}。 > JetifyTransform的执行失败:/Users/jordan/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/8.6.0/d3defb48a63aa0591117d0cec09f47a13fffda19/butterknife-compiler-8.6.0.jar。 >使用Jetifier转换'/Users/jordan/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife-compiler/8.6.0/d3defb48a63aa0591117d0cec09f47a13fffda19/butterknife-compiler-8.6.0.jar'失败。原因:AmbiguousStringJetifierException,消息:给定的工件包含一个带有包引用“android.support.v4.content”的字符串文字,无法安全地重写。需要手动更新使用反射的库,例如注释处理器,以添加对androidx的支持。 (运行--stacktrace以获取更多详细信息。) 这是一个已知的异常,Jetifier将无法将此库jetify。 建议: - 如果您认为不需要将此库jetify(例如,如果它已经支持AndroidX,或者根本不使用支持库/ AndroidX),请在gradle.properties文件中添加android.jetifier.blacklist = {逗号分隔的正则表达式(或简单名称)你不想被jetified的库的列表}。 - 如果您认为需要将此库jetify(例如,如果它使用旧的支持库并且如果不jetify会破坏您的应用程序),请联系该库的作者更新此库以支持AndroidX,并在发布支持版本后使用支持的版本。 如果需要进一步帮助,请在

Gradle Build File中的依赖项(App Level)

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.0-beta02'
    implementation 'com.melnykov:floatingactionbutton:1.3.0'
  //  implementation 'com.android.support:design:28.0.0'
 //   implementation 'com.android.support:support-v13:28.0.0'
    implementation 'com.jpardogo.materialtabstrip:library:1.0.6'
    implementation 'com.jakewharton:butterknife:8.6.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'



}

我该如何解决这个问题?
1个回答

1
请注意,根据官方文档,Butter Knife 工具现已弃用。
他们建议切换到 View Binding
因此,请重新考虑使用 Butter Knife 的决定。
在您的 gradle 文件中,请确保以下行已正确添加。
添加这些更改,然后单击 Android Studio 中的“文件”>“无效缓存并重启”。
android {
  ...
  // Butterknife requires Java 8.
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

依赖关系
dependencies {
  implementation 'com.jakewharton:butterknife:10.2.3'
  annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.3'
}

如果您正在使用Kotlin,请将annotationProcessor替换为kapt。
要在库中使用Butter Knife,请按照官方文档中“库项目”部分提供的步骤进行操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接