0
dependencies {
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

这些是 build.gradle 中的依赖项

清单合并失败:来自 [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 的属性 application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) 也存在于[androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory)。建议:将 'tools:replace="android:appComponentFactory"' 添加到 AndroidManifest.xml:7:5-21:19 的元素以覆盖。

我希望在我的项目中添加一个库,它被称为 ButterKnife 库,在添加这个库之前项目很好,但是当我添加了这个库时。发生清单合并失败错误。

我试过什么?我将这些行添加到我的 AndroidManifest.xml 中:

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

但这产生了另一组错误

原因:com.android.tools.r8.utils.AbortException:错误:仅支持从 Android N 开始的静态接口方法(--min-api 24):void butterknife.Unbinder.lambda$static$0()

我尝试删除黄油刀库,然后它构建得很好。

我还尝试仅添加其中一行:

tools:replace="android:appComponentFactory"

这什么也没做,又产生了另一个错误:

清单合并失败并出现多个错误,请参阅日志

我尝试了 Refractor->migrate to androidx,这在 Java 文件中产生了一个新问题,现在说它“无法解析符号 R”

那么我该怎么办,我正在网上学习一些应用程序开发课程。教授这门课的人似乎没有这些错误。

4

3 回答 3

3

com.jakewharton:butterknife:10.0.0正在使用 AndroidX。在这里检查。

但你也依赖com.android.support:appcompat-v7:28.0.0.

您不应将使用 AndroidX 的依赖项与非 AndroidX 混合使用。

你有两个选择:

  1. ButterKnife 使用较低版本。
  2. 迁移到 AndroidX。

要迁移到 AndroidX:

使用androidx.appcompat:appcompat:1.0.0而不是com.android.support:appcompat-v7:28.0.0.

将以下内容添加到您的gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

更改 Activity 的 AppCompatActivity 的导入

import android.support.v7.app.AppCompatActivity;

import androidx.appcompat.app.AppCompatActivity;

在此处查看迁移指南。

于 2019-02-05T15:05:42.497 回答
1

问题

我认为当前版本(最新)的黄油刀有问题。我为这个问题找到的最简单的解决方案是更改黄油刀适用的版本。

一种可能的解决方案

我改变了这个

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

对此

   implementation 'com.jakewharton:butterknife:7.0.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:7.0.1'

为什么要这样做?

我们所做的是,我们现在将使用旧版本的黄油刀,这个版本可以工作。

于 2019-02-09T10:18:25.003 回答
0

当我尝试将黄油刀应用于我现有的一个应用程序时,我遇到了同样的问题。

您的 gradle 文件上没有任何 AndroidX 实现的应用程序

implementation 'com.jakewharton:butterknife:7.0.1'
annotationProcessor'com.jakewharton:butterknife-compiler:7.0.1'

这会很好用。

由于 Butterknife 的最新版本使用 AndroidX,因此您的项目也应该迁移到 AndroidX,如果您想在现有项目上进行这似乎是额外的工作。如果新项目具有 AndroidX 实现,那么您可以转到最新版本:

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

如果您愿意将旧应用程序迁移到 AndroidX,请通过链接

于 2019-12-15T19:56:42.523 回答