【问题标题】:Android Error "Conversion to Dalvik format failed with error 2"?Android 错误“转换为 Dalvik 格式失败,错误 2”?
【发布时间】:2013-10-16 17:38:07
【问题描述】:

我在我的应用程序中使用了flurry sdk,在添加这个flurry jar 文件之前,它运行良好,没有任何错误。在 libs 文件夹中添加 flurry jar 文件后,当我在 Eclipse 中编译应用程序时出现此错误。

trouble writing output: Too many methods: 70205; max is 65536. By package:
  5 android.accessibilityservice
  1 android.animation
  2 android.annotation
315 android.app
136 android.content
 28 android.content.pm
 47 android.content.res
 35 android.database
 14 android.database.sqlite
  8 android.gesture
113 android.graphics
 44 android.graphics.drawable
  1 android.graphics.drawable.shapes
 11 android.location
 27 android.media
 40 android.net
  1 android.net.http
  1 android.net.wifi
 96 android.os

[2013-03-04 16:42:13 - myapp] Conversion to Dalvik format failed with error 2

我知道如何解决error 1,但这是我无法解决的新错误。我搜索了很多没有得到任何解决方案。

当我删除这个 jar 文件时,它工作正常。如果它在库中无法运行应用程序。 为什么我收到这个错误。?这个有什么解决办法..

【问题讨论】:

标签: android runtime-error


【解决方案1】:

由于错误是trouble writing output: Too many methods: 70205; max is 65536,因此“解决方案”是将您的方法数减少约 10%。

这通常是由于 JAR 有太多方法而导致的,尽管您自己编写了数万个方法当然是可以想象的。

尝试找到一些您不需要的 JAR 并将其删除。比如你可以use ProGuard to report the dead code within your app——也许有某个库的依赖JAR是库通常需要的,但你碰巧使用库的方式是不需要的。

ProGuard 本身也可以用来从您的应用程序中删除死代码,而无需所有正常的混淆内容。但是,这不是正常构建过程的一部分,因此您必须为此编写一个 Ant 脚本。

【讨论】:

  • 如何使用 ProGuard 在我的应用程序中查找死代码,是否可以从我的 jar 文件中删除死代码
  • 嗨 CommonsWare 我尝试在 android 中读取 xlsx 文件,但上面说的错误可以给我一个 proguard 或自定义 ant 脚本的示例,以便我可以解决它?
【解决方案2】:

我遇到了这个错误,因为我将 Google APIs 包含到我的项目中。

【讨论】:

    【解决方案3】:

    我观察到的是,我们不应该将 jars 文件直接放在像

    这样的文件夹中
    libs/x.jar
    

    当我在 libs 或任何文件夹中创建子文件夹时,例如

    libs/temp/x.jar
    

    您可以在该临时文件夹中加载多少个 jar 文件。这样我就能够避免错误。它不需要是libs 文件夹本身。名字可以是任何东西。

    只有当 jar 文件的数量很大时才需要这样做。否则可以直接放入libs文件夹中。

    【讨论】:

    • 我真的不明白这有什么不同?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多