来自androidx和com.android.support的重复类

The*_*sar 42 android libraries android-studio android-gradle-plugin androidx

我最近更新了我的Android Studio(并且我非常确定Gradle版本),现在在尝试编译项目时遇到了很多错误。这是目前困扰我的那个:

Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:26.1.0)

其次是很多类似的。

我尝试删除所有com.android.support有利于androidx的使用(有关使用替换事物的信息,请参见此处),但是com.android.support即使删除了库,库仍在使用中(一旦尝试再次编译,它们将被重新制作)。

这是我得到的全部错误的链接。

han*_*ach 86

希望您在gradle.properties以下两行中都有:

(如果您没有gradle.properties,则只需在项目的根目录中创建它)

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

看来support您的依赖项中的任何地方都有一些文物,也许形成了lib?要调查并查看依赖关系树,请运行

./gradlew :yourApp:dependencies

然后您会看到它的来历。

  • 哇,就这么办了!我假设 `android.useAndroidX=true` 完全阻止了任何 `com.android.support` 的使用,然后我可以找到使用的位置(因为它的使用产生了新的错误)!我的应用程序仍然崩溃,但至少现在可以编译了!:D (3认同)
  • 对于那些在项目根目录中找不到gradle.properties 的人,只需创建一个名为“gradle.properties”的文件,然后在其中添加“android.useAndroidX=true android.enableJetifier=true”。这解决了我的问题。 (2认同)
  • 那么我不想迁移 androidX 吗? (2认同)

Ran*_*mar 9

在您的应用程序中,build.gradle您混合使用了旧的支持库和新的支持库工件。从您的计算机中删除其中一个build.gradle以解决此问题。

旧工件: com.android.support:support-compat

对应的新工件: androidx.core:core:1.0.0

请参阅此页面以获取有关迁移到AndroidX的更多信息


fva*_*via 6

就像其他人说的,解决方案是迁移到 AndroidX,它对我有用。然而,这不是一个简单的方法,它需要一点耐心......这些是我所做的步骤:

  • 首先,在不同的分支中进行所有这些更改或备份项目非常重要

  • 您需要安装 Android Gradle 插件版本 3.5.1。所以,在build.gradle 中

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.1'
}
Run Code Online (Sandbox Code Playgroud)
  • 使用 Android Studio 工具迁移到 AndroidX重构 --> 迁移到 AndroidX...
  • 当它完成时,它已经完成了所有相关的修改,但是你可能无法正确部署项目,因为你发现了任何错误。这些是我发现的问题和解决方案:

  • 如果你使用Kotlin,在 build.gradle 中设置:

buildscript {
    ext.kotlin_version = '1.3.10'
}
Run Code Online (Sandbox Code Playgroud)

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
Run Code Online (Sandbox Code Playgroud)
  • 如果使用目标方法,请添加“文件”参数:destination file("$reportsDir/checkstyle/checkstyle.xml")
  • 如果您使用Butterknife,请使用 10.0.0 版本
  • 最后,Build --> Clean Project and Build --> Rebuild Project