首页 > 解决方案 > Android Gradle 插件导致的重复类

问题描述

我在使用 Gradle 和 Android Studio 时遇到了一些问题。在尝试编译依赖com.nukkitx.protocol:bedrock-v407:2.6.0-SNAPSHOT项时,我遇到了重复的类错误,但是在普通桌面 Gradle 项目中编译时,它编译得很好。任何帮助将不胜感激。

代码:https ://github.com/rtm516/GeyserAndroid

错误:

Duplicate class it.unimi.dsi.fastutil.ints.IntIterator found in modules jetified-fastutil-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-common:8.3.1) and jetified-fastutil-int-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-int-common:8.3.1)
Duplicate class it.unimi.dsi.fastutil.longs.LongIterator found in modules jetified-fastutil-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-common:8.3.1) and jetified-fastutil-long-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-long-common:8.3.1)
Duplicate class it.unimi.dsi.fastutil.objects.ObjectIterator found in modules jetified-fastutil-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-common:8.3.1) and jetified-fastutil-object-common-8.3.1.jar (com.nukkitx.fastutil:fastutil-object-common:8.3.1)

标签: javaandroidandroid-studiogradledependencies

解决方案


设法通过使用https://github.com/shevek/jarjar并使用以下内容删除重复的类来解决此问题。

implementation jarjar.repackage {
    from 'com.nukkitx.fastutil:fastutil-common:8.3.1'

    classDelete "it.unimi.dsi.fastutil.ints.IntIterator"
    classDelete "it.unimi.dsi.fastutil.longs.LongIterator"
    classDelete "it.unimi.dsi.fastutil.objects.ObjectIterator"
}

推荐阅读