如何在 Eclipse 和调试模式下使用 proguard?

Posted

技术标签:

【中文标题】如何在 Eclipse 和调试模式下使用 proguard?【英文标题】:How to use proguard with Eclipse and Debug mode? 【发布时间】:2015-11-09 18:56:27 【问题描述】:

我正在使用 eclipse 编译一个方法数超过 65k 的大型项目。我正在使用 proguard 来减少官方文档中指定的方法计数:https://developer.android.com/tools/building/multidex.html

使用 ProGuard 删除未使用的代码 - 配置 ProGuard 设置 您的应用程序运行 ProGuard 并确保您已启用收缩 发布版本。启用收缩可确保您不会运送未使用的物品 使用您的 APK 编写代码。

它工作正常,因为如果我用我的发布密钥签署我的应用程序,方法计数会减少到 43K。

问题是,如果我尝试使用 PLAY 按钮启动我的应用程序(这意味着使用 debug.keystore,而不在发布模式下对其进行签名),eclipse 没有使用 proguard,它会向我显示此错误,而无需让我测试我的应用:

Dex Loader Unable to execute dex: method ID not in [0, 0xffff]: 65536

我必须再使用 Eclipse 几个月,直到我们准备好将这个庞大的项目迁移到 Android Studio,所以我需要在使用 debug mude 启动时减少方法数,所以我需要在启动时应用 proguard Eclipse 的调试模式。 ¿ 怎样才能脱胎换骨?

谢谢

【问题讨论】:

Facebook 开发者有这样的问题。也许他们的经验会有所帮助facebook.com/notes/facebook-engineering/… 谢谢,但我们不是 facebook,我们需要在不破解 android dalvik vm 的情况下实现这一目标 【参考方案1】:

如果您使用的是 Eclipse IDE,则无法在调试模式下启用 Proguard,但如果可以使用 Android Studio,您可以实现这一点。 访问-Is it possible to use proguard in debug mode?

只是一个疯狂的想法:

1.在您的应用程序上以发布模式运行proguard,您将在Proguard文件夹中获得usage.txt。

2.打开usage,txt,其中包含从.apk 中分离出来的所有代码。该代码是从.apk 中分离出来的,因为它不是必需的。所以遵守这些方法。 3.现在你可以从你的代码中手动删除这些方法,也许它可以解决方法计数的最大数量。

【讨论】:

以上是关于如何在 Eclipse 和调试模式下使用 proguard?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 调试非常慢

使用 Eclipse IDE 在调试模式下加速 Tomcat

如何在 Eclipse 中调试 Apache Storm?

Eclipse CDT:线程在调试模式下获取 SIGPIPE

idea代码调试debug篇

idea代码调试debug篇