java - 设置混淆后从 Eclipse 运行 Android 应用程序

标签 java eclipse proguard obfuscation

所以,这可能是有史以来最愚蠢的问题,但我无法弄清楚。

我将项目设置为在导出 APK 时使用 Proguard 混淆。几周后,我在这里对我的应用程序进行了一些更改,以准备更新,我右键单击我的项目并执行“运行方式”->“Android 应用程序”,就像我在测试时所做的那样。

我很惊讶地在引用模糊代码的主方法的第一行遇到了 java.lang.NoClassDefFoundError。该代码在 Eclipse 中编译,但是当使用“运行方式”->“Android 应用程序”运行时,它立即崩溃。

但是,如果我从 Eclipse 导出 APK 并手动将其安装到手机上,则该应用程序运行良好!由于混淆,导出需要相当长的时间,而我每次我想测试更改时都要等待它,这很痛苦。

所以我很确定这与混淆、Proguard 和 Eclipse 构建过程有关。但我不确定到底出了什么问题,或者什么时候出问题。

我尝试清理项目,我尝试从我的project.properties 文件中取出“proguard.config=proguard.cfg”。 在这个过程中,我的项目发生了一些与混淆相关的事情,导致我的应用程序在不导出 APK 的情况下无法运行。是什么原因造成的?

我的印象是,执行 Run As -> Android Application 不会调用 Proguard。那么这是怎么回事?

(注意:使用“调试方式”而不是“运行方式”会发生同样的情况)

编辑1

我尝试注释掉project.properties中的proguard.config行,清理项目并重建它。同样的问题。

此外,我尝试重命名/删除 proguard.cfg,但问题仍然存在。 这让我想到,也许这不是一个与混淆相关的问题,而是一个项目设置问题?但是,当我导出 APK 但当我运行为 -> Android 应用程序时崩溃时,它如何工作?没有意义。

编辑2

解决方案位于对已接受答案的评论中。感谢您让我走上正确的道路!

最佳答案

我建议你disable proguard除非你正在进行发布版本。当您禁用/启用混淆器时,您将需要Project > Clean(如果您没有选中Project > Build Automatically,则需要重新构建;Project ->构建CTRL-B)。

Project > Clean

关于java - 设置混淆后从 Eclipse 运行 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176437/

相关文章:

java - Netbeans if-else 语句

java - JPA 在此持久单元中定义的名为 ... 的多个转换器

java - jad 并不总是适合上课?

android - 任务 ':app:transformClassesAndResourcesWithProguardForRelease'的执行失败:java.io.IOException-Proguard问题

java - 添加 Google Play 服务和 Proguard 时出现警告?

android - 使用 Proguard 时来源不明

java - Java 中矩阵返回错误值

java - 如何从文件中读取 N 行?

java - 判断线程是否在 hibernate

java - 在 Windows 中的 Android 模拟器中哪里可以找到创建的文件