【问题标题】:Android Studio. Can't include external library properly安卓工作室。无法正确包含外部库
【发布时间】:2014-07-09 01:47:01
【问题描述】:

我正在尝试添加到类路径外部库(this one)。我这样做的方式:File -> Project Structure -> Dependencies tab -> Add file dependency。那是对的吗? Maven 的库列表没有 Xstream。如果我单击add module dependency,则列表为空。

我只需要在类路径中添加 3 个 jar 文件 - xstream1.4.7.jarxmlpull-1.1.3.1.jarxpp3_min-1.1.4c。所以我按照之前写的做了。问题是,在此之后我可以包含这个库,一切看起来都很好。但是运行项目后出现错误:

    Error:Execution failed for task ':gridview:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    D:\adt-bundle-windows-x86_64-20140321\sdk\build-tools\android-4.4.2\dx.bat --dex --output D:\Mobile devices\Course Work\android studio\gridview\gridview\build\dex\debug D:\Mobile devices\Course Work\android studio\gridview\gridview\build\classes\debug D:\Mobile devices\Course Work\android studio\gridview\gridview\build\dependency-cache\debug D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\classes-80f8711ee653afcf7efe6b620bb026841cb6946a.jar D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\support-v4-19.1.0-269b660d78e582ad08c396ce1a171205a775b0a0.jar D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\xmlpull-1.1.3.1-e45616f42a2838037b23e662d2381fe8ba29f039.jar D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\xpp3_min-1.1.4c-26abc774a3b821df830ea21d4b6b0daf1ce5acb6.jar D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\xstream-1.4.7-12d1ec007d50d7a5412e6ce3abef54fbab1046d4.jar D:\Mobile devices\Course Work\android studio\gridview\gridview\build\pre-dexed\debug\xstream-benchmark-1.4.7-574037033c1552eddf3ff5624f95bc8d3d954d28.jar
Error Code:
    2
Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lorg/xmlpull/v1/XmlPullParser;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
        at com.android.dx.command.dexer.Main.run(Main.java:230)
        at com.android.dx.command.dexer.Main.main(Main.java:199)
        at com.android.dx.command.Main.main(Main.java:103)

此外,我在 Intelij 中使用普通 java 测试了这个库,而不是 android。这非常有效。所以我只是将工作代码从 Intelij 复制到 Android Studio 中,然后就发生了错误。

这是发生此错误的代码(如果需要):

FileReader reader = new FileReader("boards.xml");  // load file
XStream xstream = new XStream();
xstream.processAnnotations(Boards.class);
xstream.processAnnotations(IdBoards.class);
Boards boards = (Boards) xstream.fromXML(reader); // parse xml into array list

所以问题是如何将外部库正确添加到 Android Studio? 或者可能还有其他问题?感谢您的建议。

【问题讨论】:

  • 请研究“多个 dex 文件定义”错误。 Stack Overflow 上有很多问题/答案,尽管其中大部分都与支持库有关。您有一个包含在两个不同库中的类,这在此构建系统中是不允许的。

标签: android jar compiler-errors android-studio


【解决方案1】:

xml pull parser 是 android 框架的一部分,删除 xmlpull-1.1.3.1.jar 并尝试它可能会工作。

【讨论】:

  • 是的,这有帮助。非常感谢
【解决方案2】:

我通过在app/build.gradle 中使用exclude 选项修复了它,现在可以正常工作了。

dependencies {
    .....
    compile ('com.thoughtworks.xstream:xstream:1.4.7'){
        exclude group: 'xmlpull'
    }
}

【讨论】:

    【解决方案3】:

    如何将外部库添加到 Android Studio 中

    • Project ViewAndroid 更改为 Project
    • 将外部库添加到“libs”目录下 将 jar 文件放入的项目。
    • 选择“libs/xxx.jar”并右键单击,选择“添加为 图书馆”。

    然后查看build.gradledependencies,会发现jar文件添加成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      • 2017-04-17
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多