我刚刚创建了模板Libgdx项目(Core,Android,Windows)。 Core是常规的Java项目库。 Core到XStream.jar库中存在依赖关系。 Core包含通过Xml的文件输入输出。 Android项目依赖于java核心项目。
现在XStraem适用于Windows,但不适用于Android。对于Android我得到了这个:
01-22 13:03:24.141: E/AndroidRuntime(25074): FATAL EXCEPTION: GLThread 5187
01-22 13:03:24.141: E/AndroidRuntime(25074): Process: com.barsoft.drag, PID: 25074
01-22 13:03:24.141: E/AndroidRuntime(25074): java.lang.NoClassDefFoundError: com.thoughtworks.xstream.XStream
01-22 13:03:24.141: E/AndroidRuntime(25074): at com.barsoft.drag.managers.XmlManager.loadFromFileAutoType(XmlManager.java:29)
01-22 13:03:24.141: E/AndroidRuntime(25074): at com.barsoft.drag.managers.ObjectManager.createObjectAutoType(ObjectManager.java:66)
01-22 13:03:24.141: E/AndroidRuntime(25074): at com.barsoft.drag.Game.create(Game.java:36)
01-22 13:03:24.141: E/AndroidRuntime(25074): at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:334)
01-22 13:03:24.141: E/AndroidRuntime(25074): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1512)
01-22 13:03:24.141: E/AndroidRuntime(25074): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
如果我将库添加到Android项目的构建路径中,我得到了:
[2014-01-22 13:23:06 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;
[2014-01-22 13:23:06 - drag-android] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;
当我在Core中检查库时,同样的东西 - >订单和出口
关于创建核心项目的LibGDX doc:
主项目设置在Eclipse中创建一个新的Java项目:File - >新 - >项目 - > Java项目。为其命名,然后单击“完成”。
转到文件系统上的项目文件夹,然后创建一个名为libs的子文件夹。 下载每晚拉链并将gdx.jar和gdx-sources.jar放入 libs文件夹。
在Eclipse中,右键单击项目 - >刷新。对 再次点击 - >属性 - > Java构建路径 - >图书馆 - >添加JAR, 选择gdx.jar并单击OK。
在gdx.jar文件下,双击 “源附件”,单击工作区,选择gdx-sources.jar和 单击确定。
- 醇>
单击“订购和导出”选项卡,检查gdx.jar并单击 行。
注意:步骤5使gdx.jar成为传递依赖。这意味着 依赖于主项目的项目也将有gdx.jar 他们的班级路径。但是,这对Android项目不起作用。
这是否意味着Java核心项目中包含的任何依赖项都无法在Android上运行? 有没有办法让XStream传输lib工作?
答案 0 :(得分:2)
如果Android上支持该库,它将起作用。
将它放入Core项目" libs"夹。将其添加到其订单&导出选项卡。
将其添加到Android项目的“库”选项卡中。 (" Add jars
",not" Add external jars
")然后在订单&中查看导出标签也是如此。
这意味着依赖于主项目的项目在其类路径上也将具有gdx.jar。但是,这对Android项目不起作用。
这只是意味着Core项目的类路径中的库没有自动添加到Android项目中(据我所知,不久之前它已经完成了)。
如果您收到多个dex文件错误。取消选中订单&中的private libraries
Android项目的导出选项卡。
答案 1 :(得分:2)
您需要修复
compile fileTree(dir: 'libs', include: '*.jar')
线。如果您的libs文件夹位于核心项目文件夹中,请将以上行添加到
project(":core") {...
dependencies {....
compile fileTree(dir: 'libs', include: '*.jar')
}
}
build.gradle文件的一部分。并将以下行添加到您的Android项目的build.gradle文件中。
project(":android") {...
dependencies {....
compile fileTree(dir: '../libs', include: '*.jar')
}
}
Android必须拥有此行,但其他项目不需要。