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

时间:2019-04-19 04:31:10

标签: android android-studio android-gradle libraries 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(有关我使用替换事物的信息,请参见here),但是com.android.support库仍在使用,即使我删除库(一旦我尝试再次编译它们,它们就会被重新制作。)

Here's指向我得到的完整错误的链接。

5 个答案:

答案 0 :(得分:22)

我希望您在gradle.properties中包含以下两行:

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

android.useAndroidX=true
android.enableJetifier=true

似乎您的依赖项中的任何地方都有support个文物,也许是一个lib? 要调查并查看依赖关系树,请运行

./gradlew :yourApp:dependencies

然后您会从那里看到它。

答案 1 :(得分:5)

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

  • 首先,非常重要是您在其他分支中进行了所有这些更改,还是对项目进行了备份。

  • 您需要拥有Android Gradle插件版本3.5.1。因此,在 build.gradle 中设置:dependencies { classpath 'com.android.tools.build:gradle:3.5.1' ...

  • 使用Android Studio工具迁移到AndroidX:重构->迁移到AndroidX ...
  • 完成后,它已经完成了所有相关的修改,但是由于发现任何错误,有可能您无法正确部署项目。这些是我发现的问题和解决方案:

  • 如果使用 Kotlin ,请在build.gradle中设置:buildscript { ext.kotlin_version = '1.3.10' ...compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

  • 如果使用目的地方法,请添加“文件”参数:destination file("$reportsDir/checkstyle/checkstyle.xml")
  • 如果使用黄油刀,请使用10.0.0版本
  • 最后,构建->清理项目构建->重建项目

答案 2 :(得分:2)

在您的应用程序build.gradle中,您正在使用旧的支持库和新的支持库工件。

旧的支持lib构件:com.android.support:support-compat 相应的新支持lib构件:androidx.core:core:1.0.0

从build.gradle中删除其中之一以解决此问题。

答案 3 :(得分:2)

此解决方案对我来说是最好的。迁移至androidX

https://developer.android.com/jetpack/androidx/migrate

  

使用Android Studio 3.2及更高版本,您可以迁移现有的   通过选择“重构”>“从以下位置迁移到AndroidX”将项目迁移到AndroidX   菜单栏。

     

refactor命令使用两个标志。默认情况下,两者   在gradle.properties文件中设置为true:

     

android.useAndroidX=true Android插件使用适当的   AndroidX库而不是支持库。   android.enableJetifier = true Android插件自动迁移   现有的第三方库通过重写AndroidX来使用AndroidX   二进制文件。

答案 4 :(得分:-5)

转到 Grade Scrpits-> gradle.properties 然后粘贴此代码:

NSAttributedString

混乱您的项目。祝你好运:)