android - 由于Kryonet中重复的类定义,因此无法编译项目

标签 android gradle android-gradle-plugin kryonet

Caused by: com.android.dex.DexException: Multiple dex files define Lcom/esotericsoftware/reflectasm/MethodAccess;

上面的错误阻止了我的Android项目的构建,我正在使用Kryonet并将其作为以下依赖项包含在build.gradle中。
dependancies{
    implementation group: 'kryonet', name: 'kryonet', version: '2.21'
    implementation group: 'com.esotericsoftware', name: 'kryo', version: '4.0.1'

似乎Kryo和Kryo​​net都包含此类,但是我不知道如何解决该问题,我不能简单地删除Kryo,因为那样我将无法访问序列化库。

最佳答案

如果运行gradle app:dependencies,您会注意到依赖项树为:

+--- kryonet:kryonet:2.21
|    +--- com.esotericsoftware.reflectasm:reflectasm:1.07
|    +--- com.esotericsoftware.minlog:minlog:1.2    
|    \--- org.objenesis:objenesis:2.1 -> 2.5.1
+--- com.esotericsoftware:kryo:4.0.1
|    +--- com.esotericsoftware:reflectasm:1.11.3
|    |    \--- org.ow2.asm:asm:5.0.4
|    +--- com.esotericsoftware:minlog:1.3.0
|    \--- org.objenesis:objenesis:2.5.1

它们具有完全相同的依赖关系,但Kyro依赖较新的版本。
所以我只需要删除对kyronet的依赖
implementation group: 'kryonet', name: 'kryonet', version: '2.21'

编辑

这应该可以解决您的问题,并让您保留两个库
implementation (group: 'kryonet', name: 'kryonet', version: '2.21') {
    exclude group: 'com.esotericsoftware.reflectasm', module: 'reflectasm'
    exclude group: 'com.esotericsoftware.minlog', module: 'minlog'
}
implementation group: 'com.esotericsoftware', name: 'kryo', version: '4.0.1'

关于android - 由于Kryonet中重复的类定义,因此无法编译项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47721877/

相关文章:

android - 触发 AppBar 返回其在 CoordinatorLayout 内的正常位置

android - 控制RadioButton的状态

android - 如何永久取消发布免费的 Android 应用程序?

android - Gradle 同步失败 : Could not find method buildConfigField() android studio

android - Volley android 库发布请求不起作用

hibernate - 如何在 ConstraintValidator 实现中模拟 EntityManager

spring - 隐式导入的Maven BOM文件在Gradle中占主导地位吗?

android - Gradle错误:任务 ':crashlyticsGenerateSymbolsArmRelease'的执行失败。 > Crashlytics开发人员工具错误

android - 构建版本更改后无法获取构建

Android:编译错误:任务 ':app:compileDebugJava'执行失败