【问题标题】:java.lang.VerifyError - android app is not starting after moving development to another machinejava.lang.VerifyError - 将开发移动到另一台机器后,android 应用程序未启动
【发布时间】:2012-05-31 15:37:29
【问题描述】:

我已经在台式计算机上开发了数周的应用程序。我已经转移到另一台机器上进行开发,所以,我检查了代码 = 构建它,一切都很好 - 通过在 eclipse 中按 play 安装它,它会因强制关闭而失败。

不太好。

所以 - 这是堆栈跟踪:http://pastebin.com/tUBAK1Zq

我认为这可能与 android sdk 的版本有关 - 但我正在运行的版本与桌面上的版本相同。

应用程序最终抛出堆栈跟踪的行是:

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("replaylist").setIndicator("Replay List",
    res.getDrawable(R.drawable.tabview_changeicon))
    .setContent(intent);

tabHost.addTab(spec);

谁能帮我解决这个问题!

【问题讨论】:

标签: java android adb forceclose


【解决方案1】:

我自己在 Android 中多次看到“验证”问题。通常,当您使用标准 Java 6 api 但 Android 中不存在该 API 时,就会发生这种情况。因为您的 Eclipse 正在“验证”基于您的 JRE 的代码,所以如果您使用原生 Android JRE (dalvik) 中不存在的 API,它不会抱怨。结果是强制关闭和神秘的验证消息。当您使用标准 java jdk 编译库然后在 Android 项目中使用该库时,您会看到很多。

您最好的办法是使用 Java 5 兼容性编译您的库项目,并查看 eclipse 抱怨哪些 API。通常你会发现你正在使用一个尚未在 Android 中实现的 String 或 StringBuffer(或其他一些核心类)中的方法。我也被使用了一个没有在 Android 中实现的构造函数所困扰。

【讨论】:

  • 试过了——它抱怨的只是@Override 注释和内联类......正如我所说——这在我的另一台机器上 100% 有效,没有发生代码更改,为什么会突然出现此错误并与无效 API 相关联?我不认为这是同一个问题?
  • 让我感兴趣的是它每次都抱怨 TabHost.addSpec 的方式......?
  • 如果您有 jar 的源代码,那么您可以尝试将项目设为 Android 库项目并照此使用。这样,看看是否有区别,因为当使用库项目时,JAR 将使用 dalvik 编译器重建。堆栈跟踪显示无法创建您的活动,因此如果您的活动是您的选项卡之一,那么这可能就是 addTab 显示失败的原因。
  • 要检查的另一件事... 确保您的 Android SDK 与您正在测试的设备的模拟器相匹配。即,如果您包含 4.0.3 SDK 但随后在 2.3 设备上进行测试,如果您使用了 4.x api,您可能会遇到问题。 (对于任何 2 个版本的 SDK 也是如此——即,使用 2.2 api 但部署到 2.1 设备)
【解决方案2】:

问题最终是由于我相信一个过时的 android sdk 管理器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2017-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多