签名的Android应用程序与从Eclipse上的设备上手动运行时的行为不同?

时间:2011-10-11 05:02:43

标签: android eclipse behavior unsigned signed

在上个世纪解决这个问题之后,我现在感到筋疲力尽。在此先感谢您的帮助!

  

发生了什么:我开发了一个应用程序,这是一个包含游戏的游戏   使用CountDownTimers进行定时游戏回合的活动。暂停,   退出此活动的应用程序(通过按电源按钮,   主页按钮等)在我的三星Galaxy Tab 7“上测试时工作正常,   在签署之前从Eclipse运行未签名的应用程序。

     

欣喜若狂,我已经完成了我的工作,我继续签下这个疯狂的apk   CMD。我测试已签名的应用程序只是为了检查它是否正常工作   将已签名的.apk复制并粘贴到同一Galaxy Tab的SD卡中   然后在删除运行的应用程序的所有旧数据后安装它   Eclipse,但当然它不起作用。

     

出错的地方包括当我按下时没有暂停的活动   正在运行定时轮时的电源按钮(在我重新启动设备后,我发现计时器一直在运行,而屏幕关闭并且仍在运行,我的暂停游戏对话框无处可寻),活动存在   当我按下主页键时关闭(在我按下主页键并打开之后)   该应用程序再次从介绍性的启动画面重新启动   应用程序)最后,当我中途暂停游戏时,关闭电源   屏幕,在暂停游戏对话框上点击恢复 - 游戏计时器来自类似的东西   18.42s直接到0.00s并继续从那里进入下一个活动。

好吧,这是一个故事而非关于代码的问题 - 但这是技术问题 - 为什么我的签名应用程序与从Eclipse运行的未签名应用程序的行为不同?我没有在这里提供任何关于我如何做这些事情的代码,因为考虑到它们首先工作(例如在Eclipse中开发时在我的设备上运行应用程序),这应该是无关紧要的。

非常接近...... URGH

1 个答案:

答案 0 :(得分:1)

不确定这是否真的是您的问题...但是当unsigned / Eclipse版本执行时,签名应用程序无效的最常见原因是构建签名应用程序通常包括Proguard混淆/优化步骤。

Proguard优化的一个后果是,XML布局或使用反射中引用的某些类/方法可能不再具有相同的名称(或者可能已完全优化)。

检查最简单/最快捷的方法是查看logcat跟踪 - 会出现ClassNotFoundException或MethodNotFoundException等等。