2

我开发了一个应用程序,它的项目中有几个包......其中一个包中的一个类在第一行代码中被立即调用,这引发了可怕的 java.lang.NoClassDefFoundError 错误......我不明白了,这个包只是在项目中,它在我的 Android 1.6 设备上运行良好,但不适用于我的 1.5 设备......我不得不说这个项目最初是为 1.6 设置的,但后来我将清单内的内容从 4 更改为 3 ......这是不好的做法吗?或者可能与平台版本无关?

我也确实从 DDMS 获得了这些行:

05-04 17:24:59.921: WARN/dalvikvm(2041): VFY: unable to resolve static field 2 (MANUFACTURER) in Landroid/os/Build;
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejecting opcode 0x62 at 0x0034
05-04 17:24:59.921: WARN/dalvikvm(2041): VFY:  rejected ***/android/managementModule/Management;.getDeviceSpecifics ()V
05-04 17:24:59.921: WARN/dalvikvm(2041): Verifier rejected class ***/android/managementModule/Management;

那是 ManagementModule,它还尝试检索设备本身的几个信息字段......同样,这在 1.6 设备上工作得很好,即使那是一个开发设备,而我的 1.5 设备是一个非开发设备......

4

1 回答 1

1

验证者在 1.5 和 1.6 之间没有太大变化,所以它应该同样高兴或不高兴。(在 >= 2.0 上,它会在第一次使用该字段时抛出 NoSuchFieldError,而不是拒绝整个类。)

问题似乎是 Android 1.5(“Cupcake”)中不存在 Build.MANUFACTURER 字段。我相信它是在 1.6(“甜甜圈”)中引入的。

于 2010-05-04T20:53:52.627 回答