2014-01-22 55 views
2

我刚刚创建了模板Libgdx项目(Core,Android,Windows)。 Core是常规的Java项目库。 Core在XStream.jar库中存在依赖关系。 Core包含通过Xml的文件输入输出。 Android项目对Java核心项目有依赖性。Libgdx,传递依赖项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; 

同样的东西,当我到图书馆的核心 - >在线订单和出口

从LibGDX文档有关创建核心项目:

  1. 主项目设置在Eclipse中创建一个新的Java项目:文件 - >新建 - >项目 - > Java项目。给它一个名字,然后单击完成。

  2. 转到文件系统上的项目文件夹并创建一个名为libs的子文件夹。 下载每晚zip,并将gdx.jar和gdx-sources.jar放入 libs文件夹中。

  3. 在Eclipse中,右键单击项目 - >刷新。右键 再次点击 - >属性 - > Java Build Path - > Libraries - >添加JAR, 选择gdx.jar并点击OK。

  4. 下gdx.jar文件,双击 “源连接”,单击工作区,选择GDX-sources.jar和 单击确定。

  5. 单击订单和导出选项卡,检查gdx.jar,然后单击 确定。

注意:第5步使gdx.jar成为传递依赖。这意味着 依赖于主项目的项目也会在其类路径中拥有gdx.jar 。但是,这不适用于Android项目。

这是否意味着Java核心项目中包含的任何依赖项在Android上不起作用? 有没有办法让XStream transit lib工作?

回答

2

如果该库在Android上受支持,它将起作用。

将其放入Core项目的“libs”文件夹中。将其添加到其订单&导出选项卡。

将它添加到Android项目的Libraries选项卡中。 (“Add jars”,而不是“Add external jars”)然后在订单&导出选项卡中检查它。

这意味着依赖于主项目的项目也会在其类路径中包含gdx.jar。但是,这不适用于Android项目。

这只是意味着Core项目的类路径中的库不会自动添加到Android项目(据我所知,前一段时间它)。

如果您收到多个dex文件错误。在Android项目的订单&导出选项卡中取消选中private libraries

+0

显然只是一些XStream的兼容性问题,因为很少有其他库似乎工作。 – barsoft

2

你需要修复您的

compile fileTree(dir: 'libs', include: '*.jar') 

线。如果您的libs文件夹位于核心项目的文件夹中,请将以上行添加到

project(":core") {... 

    dependencies {.... 
     compile fileTree(dir: 'libs', include: '*.jar') 
    } 
} 

build.gradle文件的一部分。并在build.gradle文件中将下面的行添加到您的Android项目的一部分。

project(":android") {... 

    dependencies {.... 
     compile fileTree(dir: '../libs', include: '*.jar') 
    } 
} 

Android必须拥有此行,但对其他项目不是必需的。