【问题标题】:Android signed app ClassNotFoundExceptionAndroid 签名应用 ClassNotFoundException
【发布时间】:2011-03-02 05:40:10
【问题描述】:

我有一个在本地部署时运行良好的应用程序。我已经在 Eclipse 中签名了,而且我第一次这样做就成功了。我已经制作了另一个版本,并且可以在本地运行,但是在我签名后,尝试在手机上打开它会立即炸毁:

java.lang.RuntimeException: 无法实例化活动 ComponentInfo{com.myapp/com.myapp.MyAoo}: java.lang.ClassNotFoundException: com.myapp.MyAoo in loader dalvik.system.PathClassLoader[/data/app/ com.myapp-1.apk

我已尝试卸载并重新安装。一样。本地部署的未签名应用程序有效。签名的应用程序炸弹。有什么想法吗?

【问题讨论】:

  • 原来原版也有同样的问题,但是当我认为它有效时,我看错了。 dex 大小是 1/4,所以我认为它实际上缺少类。不知道这些工具是如何决定把这些东西拿出来的。
  • 这里不知道。我不能在不知道它是“答案”的情况下选择一个,但这可能是一个死问题,因为这已经有一段时间了。哦,好吧。
  • 这发生在我从 Eclipse 导出的大约一半的 apk 中。我可以通过再导出几次来修复它。

标签: android google-play


【解决方案1】:

您是否在使用 proguard 混淆?它只会对签名的 jars 起作用,并会删除它认为“未使用”的类。

尝试将其关闭并重新签名,然后重试。

要禁用,请确保文件:/default.properties 不包含 proguard.config 属性。

更多信息请参见http://developer.android.com/guide/developing/tools/proguard.html

【讨论】:

  • 我在 default.properties 中没有看到 proguard。 dex 大小完全不同。最终输出为 800k (ish) 到 250k (ish)。不过,请参阅上面的更新。对于一个细节,白痴会采取行动。
【解决方案2】:

结果证明这是某个地方的一些奇怪的设置。我还没有真正“弄清楚”。我使用 eclipse 导出签名包,但我实际上是用 intellij idea 开发的。我从想法中导出,一切正常。

【讨论】:

    【解决方案3】:

    我遇到了完全相同的问题,这让我感到困惑,因为我之前曾多次签署和导出 apk,但都没有问题。在禁用 ProGuard 以确保不是原因后,我在 Eclipse 中清理了项目:

    从顶部菜单 - 单击“项目”,在出现的下拉菜单中单击“清理”,选择要清理的项目并单击“确定”。

    这样做之后,我能够运行签名和导出的 apk 而不会在启动时崩溃。

    【讨论】:

      【解决方案4】:

      我有同样的问题,我解决了如下:

      1. 在应用程序的根文件夹中创建文件夹“libs”,如果您已经有文件夹“lib”,请将其重命名为“libs”
      2. 在文件夹“libs”中添加android-support-v4.jar,如果没有从here获取,请验证您是否在此文件夹“/您的android安装目录/extras/android/support/v4”中拥有它
      3. 清理项目:eclipse >> project >> clean
      4. 导出签名的应用程序

      对我来说效果很好,希望也能解决您的问题。

      【讨论】:

        猜你喜欢
        • 2015-06-09
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-26
        相关资源
        最近更新 更多