2

好的,我已经用谷歌搜索了这个问题,但我无法终生解决我的问题。

首先,我使用 eclipse 在 libGDX 框架内制作游戏。我在我的项目中导入了 kryonet。

当我为 PC 编译时它可以工作。

我的问题是当我为 Android 编译时,它给了我这个错误:

Dx trouble writing output: already prepared
[Dex Loader] Unable to execute dex: Multiple dex files define Lcom/esotericsoftware/jsonbeans/Json$FieldMetadata;
[-android] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/esotericsoftware/jsonbeans/Json$FieldMetadata; 

我已尽我所能,我已将库添加到我的 android 项目的构建列表中,我已将它们添加到 android 项目的 /lib 文件夹中。我删除了我的 DEX 文件夹。我清理了我的构建并重新启动。我的 /gen 在我的订单和导出中高于我的 /src 我显然缺少一些基本的东西。我今天花了所有时间在谷歌上搜索这个。

我正在使用的与 Kryonet 相关的库 .JAR 列表:

asm 
jsonbeans 
junit 
kryo 
kryo-debug
minlog 
minlog-none 
objenesis 
reflectasm

有人可以帮我吗?谢谢 :)

-edit- 如果我删除 jsonbean 我得到

[2013-12-19 22:35:43 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/esotericsoftware/kryo/ClassResolver;
[2013-12-19 22:35:43] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/esotericsoftware/kryo/ClassResolver;
4

2 回答 2

4
Dx 写输出的麻烦:已经准备好了
[Dex Loader] 无法执行dex:多个dex文件定义Lcom/esotericsoftware/jsonbeans/Json$FieldMetadata;
[-android] 转换为Dalvik格式失败:无法执行dex:多个dex文件定义Lcom/esotericsoftware/jsonbeans/Json$FieldMetadata;

正如它所说,同一个包有重复的引用。您需要弄清楚这些包在您要添加的库中的确切位置。并想办法只保留一份副本。

我猜 kyronet 已经包含了 jsonbeans。可以尝试从依赖项列表中删除 jsonbeans 库。

于 2013-12-20T04:35:05.220 回答
1

哦,哇,好吧,我很兴奋。感谢 Kumar Bibek 帮助我。我在这里回答我自己的问题,以防其他人和我一样是菜鸟,并且和我一样在谷歌上运气不好:)

好的,首先将 Kryonet 的源代码安装到您的主 GDX 项目 /src 文件夹(独立于平台的项目)。

接下来将所需的 .JAR 复制到主 GDX 项目的 /lib 中。

然后在 Eclipse 中右键单击您的主项目并将库添加到您的构建路径。确保在订单和导出下检查它们(这可能不是必需的)

(这是我犯错的地方)确保您没有将所需的 .JAR 放入您的 android 源文件夹的 /lib 中,仅在主 GDX 项目 /lib 文件夹中

然后在 Eclipse 中右键单击您的 android GDX 项目并单击添加 JAR。在这个菜单中,进入您的主 GDX 项目的 /lib 文件夹并为 Kryonet 添加所有必要的 JAR。然后进入 Order and Export 并检查所有这些 JAR。

现在你可以编译你的 Android GDX 项目再次感谢堆栈溢出我爱你。我希望这是有道理的,并且可以帮助其他新手,因为我现在很醉了,哈哈:)

于 2013-12-20T07:01:44.040 回答