Libgdx,Transitive依赖Android,Java库项目,Jar

时间:2014-01-22 11:31:50

标签: android jar libgdx xstream

我刚刚创建了模板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:

  
      
  1. 主项目设置在Eclipse中创建一个新的Java项目:File - >新    - >项目 - > Java项目。为其命名,然后单击“完成”。

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

  4.   
  5. 在Eclipse中,右键单击项目 - >刷新。对   再次点击 - >属性 - > Java构建路径 - >图书馆 - >添加JAR,   选择gdx.jar并单击OK。

  6.   
  7. 在gdx.jar文件下,双击   “源附件”,单击工作区,选择gdx-sources.jar和   单击确定。

  8.   
  9. 单击“订购和导出”选项卡,检查gdx.jar并单击   行。

  10.         

    注意:步骤5使gdx.jar成为传递依赖。这意味着   依赖于主项目的项目也将有gdx.jar   他们的班级路径。但是,这对Android项目不起作用。

这是否意味着Java核心项目中包含的任何依赖项都无法在Android上运行? 有没有办法让XStream传输lib工作?

2 个答案:

答案 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必须拥有此行,但其他项目不需要。