2014-01-22 78 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必須擁有此行,但對其他項目不是必需的。