所以,这可能是有史以来最愚蠢的问题,但我无法弄清楚。
我将项目设置为在导出APK时使用Proguard混淆。几周后,在这里,我正在对我的应用程序进行一些更改以准备更新,我右键单击我的项目并执行Run As - > Android应用程序,就像我在测试时一直习惯的那样。
在我的main方法的第一行引用了混淆代码时,我很惊讶地遇到了java.lang.NoClassDefFoundError。代码在Eclipse中编译,但在使用Run As运行时 - > Android应用程序,它立即崩溃。
但是,如果我从Eclipse导出一个APK并在我的手机上手动安装它,该应用程序运行正常!由于混淆,导出需要很长时间,而我和#39我正在测试它,每次想要测试变化时都要等待它。
所以我非常确定这与混淆,Proguard和Eclipse构建过程有关。但我不确定到底出了什么问题,或者什么时候出错。
我尝试过清理项目,我已经尝试过" proguard.config = proguard.cfg"我的project.properties文件。 在某个地方,我的项目发生了与模糊相关的事情,这使我的应用程序在不导出APK的情况下无法运行。是什么导致这种情况?
我的印象是Run As - > Android应用程序不会调用Proguard。那是怎么回事?
(注意:同样的事情发生在" Debug As"而不是" Run As")
编辑1
我尝试在project.properties中注释掉proguard.config行,清理项目并重建它。同样的问题。
此外,我尝试重命名/删除proguard.cfg,但问题仍然存在。 这让我思考,也许这不是一个与模糊相关的问题,而是一个项目设置问题?但是当我在运行时导出APK但崩溃时它怎么能运行 - > Android应用程序?没有用。
编辑2
解决方案是对已接受的答案进行评论。感谢您让我走上正确的道路!
答案 0 :(得分:2)
我建议您disable proguard,除非您正在进行发布版本。当您停用/启用proguard时,您需要Project > Clean
(如果您没有选中Project > Build Automatically
,则重新构建; Project -> Build
或 CTRL - 乙)。