【问题标题】:Dex Error when I include .jar files into my android project将 .jar 文件包含到我的 android 项目中时出现 Dex 错误
【发布时间】:2017-11-27 15:48:17
【问题描述】:

我试图将 2 个 .jar 文件包含到我的 android 项目中,我将它们拖到我的 libs 文件夹中,然后通过 Build->Edit Library and Dependencies->jar Dependency添加它们>,不管有没有最后一步,我都已经完成了,不管怎样,当我尝试运行我得到的应用程序时,当我将它们添加到我的 libs 文件夹时:

信息:Gradle 任务 [:app:assembleDebug] 错误:任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败。

java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: 无法合并 dex 信息:在 10 秒内构建失败 信息:1个错误 信息:0 个警告 信息:在控制台中查看完整的输出

但是,如果我从我的 libs 文件夹中删除文件,错误就会消失,问题是我显然想为我的应用程序使用这些 jar 文件我在这里看到了其他 dex 错误主题,但是当它发生时似乎没有一个可以解决这个问题这是通过添加和删除 jar 文件

谢谢

【问题讨论】:

  • 我建议您编辑您的问题并提供 Gradle 控制台的完整输出,而不仅仅是一个错误行。通常,问题的根源(例如,重复的类)出现在 Gradle 控制台输出的其他位置。一般来说,尽量不要使用 JAR,而是在存储库中使用工件。
  • 这可能是因为不兼容。尝试通过在您的 gradle 中添加 multiDexEnabled true' inside defaultConfig{ }` 来启用 multidex。
  • 我尝试添加 multidexenable 但这无济于事,而且 gradle 控制台中确实没有其他内容,但无论如何我都会添加其余部分

标签: java android jar dex


【解决方案1】:

如果您阅读this 文档,您会了解到 Android 应用 (APK) 文件包含 Dalvik 可执行 (DEX) 文件形式的可执行字节码文件,其中包含用于运行您的应用的编译代码。 Dalvik 可执行文件规范将单个 DEX 文件中可以引用的方法总数限制为 65,536 或 64k 个方法。您使用的 jar 文件包含类和方法。将它们添加到您的项目中必须超过允许的最大 64k 方法标记,因此会产生错误。

这个问题很常见,有很多可用的解决方案,例如this。但是,在您的情况下,我建议您转到您的应用程序级别的 gradle 文件并删除所有不必要的依赖项和冗余依赖项(如果存在)。还要尝试只导入项目实际需要的那些依赖项,例如,如果您需要来自 Google Play 服务的库,而不是导入整个 google play 服务库,只导入项目实际需要的那些。

如果可能的话,试着找到可以替换你当前 jar 文件的 jar 文件。

PS:您能告诉我您尝试导入的 jar 文件的名称吗?它可能有助于以简单的方式解决问题。

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2023-03-13
    • 2016-07-23
    • 1970-01-01
    相关资源
    最近更新 更多