【问题标题】:Trying to get Kryonet to work with Android试图让 Kryonet 与 Android 一起工作
【发布时间】:2013-12-20 04:18:37
【问题描述】:

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

首先,我使用 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;

【问题讨论】:

  • -update- 如果你需要知道我之前已经成功编译到android。这个问题完全与我尝试将 KryoNet 导入我的游戏有关。谢谢:)

标签: java android libgdx kryonet


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

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

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

【讨论】:

  • 感谢您的建议,但现在它说:[2013-12-19 22:35:43 - Dex Loader] 无法执行 dex:多个 dex 文件定义 Lcom/esotericsoftware/kryo/ClassResolver; [2013-12-19 22:35:43 - BumperBugs-android] 转换为 Dalvik 格式失败:无法执行 dex:多个 dex 文件定义 Lcom/esotericsoftware/kryo/ClassResolver;
  • 如果我从主项目的依赖项中删除 jsonBeans,则执行 json 序列化的 Kyronet 类中存在错误
【解决方案2】:

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

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

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

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

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

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

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

【讨论】:

  • 需要两天时间才能接受我自己的答案,好吧,也许我可以稍后编辑它哈哈... ~_~
  • 你称之为“主要 GDX 项目”?是 CORE 文件夹吗?还是别的什么?
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
相关资源
最近更新 更多