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

dluptydi  于 2023-04-18  发布在  Android
关注(0)|答案(6)|浏览(122)

我最近更新了我的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一个链接到我得到的完整错误。

falq053o

falq053o1#

将这些行添加到gradle.properties

android.useAndroidX=true
android.enableJetifier=true

如果不存在gradle.properties,则在项目的根目录中创建该文件。
看起来你的依赖项中有一些support的遗迹,可能来自一个lib?要调查和查看依赖项树,请运行:

./gradlew :yourApp:dependencies

然后你就能看到它的来源。

4ioopgfo

4ioopgfo2#

在您的应用build.gradle中,您混合使用了旧支持库和新支持库工件。请从您的build.gradle中删除其中一个工件以解决此问题。
老神器:com.android.support:support-compat
对应的新伪影:androidx.core:core:1.0.0
参见this page for more information on migrating to AndroidX

pxiryf3j

pxiryf3j3#

就像其他人说的,解决方案是迁移到AndroidX,它为我工作.然而,这不是一个简单的方法,它需要一点平静...这些是我做的步骤:

  • 首先,非常重要的是,您在不同的分支中进行所有这些更改,或者备份您的项目。
  • 您需要安装Android Gradle Plugin Version 3.5.1。因此,在 build.gradle 中设置:
dependencies {
    classpath 'com.android.tools.build:gradle:3.5.1'
}
  • 使用Android Studio工具迁移到AndroidX:* 重构--〉迁移到AndroidX... *
  • 当它完成时,它已经完成了所有相关的修改,但可能你不能正确部署项目,因为你发现任何错误。这些是我发现的问题和解决方案:
  • 如果你使用 * Kotlin *,在build.gradle set中:
buildscript {
    ext.kotlin_version = '1.3.10'
}

compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
  • 如果使用 destination 方法,则添加“file”参数:destination file("$reportsDir/checkstyle/checkstyle.xml")
  • 如果使用 Butterknife,请使用10.0.0版本
  • 最后,Build --〉Clean ProjectBuild --〉Rebuild Project
qf9go6mv

qf9go6mv4#

这个解决方案对我来说是最好的。迁移到androidX
https://developer.android.com/jetpack/androidx/migrate
在Android Studio 3.2及更高版本中,您可以通过从菜单栏中选择Refactor〉Migrate to AndroidX将现有项目迁移到AndroidX。
refactor命令使用了两个标志。默认情况下,在www.example.com文件中,这两个标志都设置为truegradle.properties:
android.useAndroidX=true Android插件使用适当的AndroidX库而不是支持库。android.enableJetifier=true Android插件通过重写现有第三方库的二进制文件,自动迁移现有第三方库以使用AndroidX。

7d7tgy0s

7d7tgy0s5#

如果您在使用Facebook中介和Google广告库后遇到任何关于重复类的问题,请按照以下步骤操作:

1-在顶部的build.gradle(Module)中添加此内容

apply plugin: 'com.google.firebase.crashlytics'
apply plugin: 'com.google.gms.google-services'

2-在build.gradle(Module)-〉android中添加此内容

packagingOptions {
        exclude "META-INF/DEPENDENCIES"
    }

3-在build.gradle(Module)-〉dependencies中添加此内容

//firebase bom
    implementation platform('com.google.firebase:firebase-bom:29.2.0')
    implementation 'com.google.firebase:firebase-crashlytics'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging:23.0.1'

    //ADS
    def ads_version = "20.6.0"
    implementation "com.google.android.gms:play-services-ads:$ads_version"

    //facebook ads
    implementation 'com.google.ads.mediation:facebook:6.8.0.0'

4-在build.gradle(Project)-〉buildscript-〉dependencies中添加此内容

classpath "com.android.tools.build:gradle:7.0.4"
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'

5-在gradle.wrapper.propertise中添加此内容

#Wed Dec 16 15:32:03 PKT 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-bin.zip
yk9xbfzb

yk9xbfzb6#

我在我的离子项目中也遇到了同样的问题,在卸载androididersupportiderv 4和build应用程序后运行良好,没有任何问题。
除此之外,在你的gradle中有这些属性
android.useAndroidX=true android. enableJetier =true
如果你想迁移到androidx,你可以通过Refactor -〉Migrate to AndroidX来实现。
成功地建造。

相关问题