【问题标题】:Android - VerifyErrorAndroid - 验证错误
【发布时间】:2011-11-13 23:49:10
【问题描述】:

这是我在 Android 开发者控制台中从数百名用户那里收到的错误。

我花了一整天的时间尝试在代码中解决这个问题,它花了 9 个版本发布,但我仍然收到这些错误报告。我的应用程序每天有大约 5000 次下载,并且在大约 10% 的设备上崩溃。因此,我的应用程序的评分在一天之内从 4.7 下降到了 3.0。

我实在想不通。

我正准备让某人真正远程连接到我的机器并付费查看它。

总之,长话短说。我昨晚更新了代码,并从我的应用程序中卸载了谷歌广告。添加了一点代码并将应用程序发布到 android 市场。今天早上我收到了 200 个错误报告。应用在许多设备上崩溃。

我查看了错误报告,这是大多数人得到的:

java.lang.VerifyError: a.xml.a$Searching
at a.xml.a.startTalkingActivity(a.java:849)
at a.xml.a.onActivityResult(a.java:1053)
at android.app.Activity.dispatchActivityResult(Activity.java:3890)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
at android.app.ActivityThread.access$2800(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)

我已重新放入广告,但错误不断出现。我删除了我添加的代码,但错误仍然存​​在,并且收到更多愤怒的评论抱怨按下按钮时崩溃。

我在这里发疯了,我将不胜感激任何帮助。我不知道这个错误是什么意思。

【问题讨论】:

  • 基本上,无法“验证”类a.xml.a$Searching。课堂上的某些东西是错误的,尽管您并没有得到太多的线索,因为它可能是什么。 (几乎和“NoClassDefFoundError”一样令人沮丧。)您的类和设备上的 jar 文件中的另一个类之间很可能存在不匹配,就方法调用的类型等而言。当 jar 版本在不兼容的时尚(不幸的是并不少见)。如果您按手机品牌、类型和 Android 版本对故障进行分类,您可能会得到一些线索——可能是失败的品牌或版本。
  • 您是否在使用 ProGuard 混淆您的源代码?尝试在不混淆代码的情况下构建应用程序。
  • 对不起,我该怎么做?我真的想公开我的应用程序代码吗?
  • 我没有要求你发布,如果你使用ProGuard/混淆,尝试构建不混淆并测试它,看看它是否真的是由混淆引起的。
  • 好吧,抱歉,也许我没有解释,我无法在我自己的 Android 设备上重现此问题,崩溃来自我的一小部分用户。其中大约 10%,我感觉它是 2.2 及以下的 Android,但我不能确定,因为 Google 不会给我这些统计数据。

标签: android verifyerror


【解决方案1】:

您似乎拥有a.xml.a 类的Searching 内部类。 Searching 内部类指的是用户设备上不存在的东西,即使它存在于您的构建目标中。

您可能会暂时将您的构建目标删除为与您的 minSdkVersion 相同(如果它不存在的话)并查看此类中是否出现任何内容。

除此之外,尝试找出应用出现故障的设备的共同特征(例如操作系统版本)。

【讨论】:

  • 这太令人沮丧了,...我已经花了一整天的时间,仍然不知道它可能是什么,也不知道如何解决这个问题。
  • @jjj:您可以按照我的回答第二段中的说明开始。或者,尝试在较旧的模拟器中运行您的应用程序,看看您是否可以重现该问题(应该在您第一次尝试引用 a.xml.a 时出现)。或者,将Searching 的源代码粘贴到您的答案中,以便其他人查看。
  • 搜索源码大约有2000行。但这可能与我自己的机器有关吗?我看不到我在代码中所做的任何事情。爪哇更新?一些 Eclipse 更新或更改?
  • @jjj:“但这可能与我自己的机器有关吗?” - 不。 “我看不到我在代码中所做的任何事情。” -- 然后使用您的版本控制系统回滚到代码的已知良好版本。
  • 我发现这个问题在某种程度上与 Android 的先前版本与 2.3 版本有关。我已经使用此限制发布了我的应用程序,并且不再出现错误。不是解决方案,但是嘿...
【解决方案2】:

我只是想为这个问题提供我的解决方案,因为我在其他任何地方都没有真正找到这个。

我能够通过仔细检查项目的构建路径来解决问题。当我忘记导出外部库时,我总是会收到错误消息。希望这可以帮助某人:-)

【讨论】:

    【解决方案3】:

    我已经解决了这个问题,不得不把课程分成更小的部分,太长了。

    【讨论】:

    • 那么你应该将此帖子标记为正确答案(绿色复选标记)。也许你也可以提供一些关于你的解决方案的细节。
    【解决方案4】:

    在进行 Android ADT 和 Java 更新后,我遇到了同样的问题。请尝试以下步骤:

    1. 在您的 Android 项目中删除指向您的外部库的链接。
    2. 将所有外部库(包括 Google Ad 库)移动到 Android 项目内的 \libs 文件夹中。
    3. 重新链接您现在存在于 Project\libs 目录中的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多