由于Kryonet

时间:2017-12-08 20:43:16

标签: android gradle android-gradle 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因为那时我失去了对序列化库的访问权。

1 个答案:

答案 0 :(得分:1)

如果您运行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'