由于 Kryonet 中有重复的 class 定义,无法编译项目
Unable to compile a project due to duplicate class definitions in 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 和 Kryonet 似乎都包含这个 class,但我不知道如何解决这个问题,我不能简单地删除 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'
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 和 Kryonet 似乎都包含这个 class,但我不知道如何解决这个问题,我不能简单地删除 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'