6

我在我的应用程序中使用了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 文件时,它工作正常。如果它在库中无法运行应用程序。为什么我收到此错误。?这个有什么解决办法。。

4

3 回答 3

12

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

这通常是由于 JAR 太多和方法太多而造成的,当然可以想象您自己编写了数以万计的方法。

尝试找到一些您不需要的 JAR 并将其删除。例如,您可以使用 ProGuard 报告您的应用程序中的死代码——也许该库通常需要某个库的依赖 JAR,但您使用该库的方式并不需要。

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

于 2013-03-25T10:42:06.877 回答
1

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

libs/x.jar

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

libs/temp/x.jar

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

仅当 jar 文件数量较多时才需要这样做。否则你可以直接放在libs文件夹中。

于 2013-10-16T09:38:07.870 回答
1

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

于 2013-10-15T01:55:46.193 回答