【发布时间】:2014-11-27 17:46:01
【问题描述】:
所以,这可能是有史以来最愚蠢的问题,但我想不通。
我将项目设置为在导出 APK 时使用 Proguard 混淆。几周后,我在这里对我的应用程序进行了一些更改以准备更新,然后我右键单击我的项目并执行 Run As -> Android Application,就像我在测试时经常做的那样。
我很惊讶地看到 java.lang.NoClassDefFoundError 出现在我的 main 方法的第一行,它引用了混淆代码。该代码在 Eclipse 中编译,但是当使用 Run As -> Android Application 运行时,它会立即崩溃。
但是,如果我从 Eclipse 导出一个 APK 并手动将其安装到我的手机上,该应用程序运行良好!由于混淆,导出需要相当长的时间,而我每次我想测试更改时都等待它是一种痛苦。
所以我很确定这与混淆、Proguard 和 Eclipse 构建过程有关。但我不确定到底出了什么问题,或者什么时候出了问题。
我尝试清理项目,尝试从 project.properties 文件中删除“proguard.config=proguard.cfg”。 在某个地方,我的项目发生了与混淆相关的事情,导致我的应用无法在不导出 APK 的情况下运行。这是什么原因造成的?
我的印象是执行 Run As -> Android Application 不会调用 Proguard。那到底是怎么回事?
(注意:使用“Debug As”而不是“Run As”会发生同样的事情)
编辑 1
我尝试在 project.properties 中注释掉 proguard.config 行,清理项目并重新构建它。同样的问题。
此外,我尝试重命名/删除 proguard.cfg,但问题仍然存在。 这让我想到,也许这不是一个与混淆相关的问题,而是一个项目设置问题?但是,当我运行为 -> Android 应用程序时,导出 APK 但崩溃时它怎么能工作?没有意义。
编辑 2
解决方案在对已接受答案的评论中。感谢您让我走上正确的道路!
【问题讨论】:
标签: java eclipse proguard obfuscation